当前位置 : 主页 > 编程语言 > ruby >

ruby-on-rails – Cucumber:Factory Girl不修改数据库 – 用.create创建对象但后来数据库

来源:互联网 收集:自由互联 发布时间:2021-06-23
p = Factory(:model) ap Model.find(:all) #output to prove that it's getting created 所以…打印显示对象的ID正在上升….但是数据库仍然是空的,因为我不断刷新MySQL工作台上的视图 – 所以我的黄瓜测试失败
p = Factory(:model) 

  ap Model.find(:all)  #output to prove that it's getting created

所以…打印显示对象的ID正在上升….但是数据库仍然是空的,因为我不断刷新MySQL工作台上的视图 – 所以我的黄瓜测试失败,因为控制器从数据库中提取东西…但数据库中没有任何内容! =(

我的Gem文件:测试

group :test do
    gem "cucumber", "~>0.10.3"
    gem "cucumber-rails", "0.3.2"
    gem "launchy"
    gem "hpricot"
    gem "gherkin", "~>2.4.0"

    gem "capybara", "0.4.1.2"
    gem "rspec", "1.3.2"
    gem "rspec-rails", "1.3.2"
    gem "rspec-core"
    gem "rspec-expectations"

    gem "webrat", "0.7.0"
    gem "database_cleaner"

    gem "factory_girl", "1.2.4"
    gem "shoulda", :require => nil
    gem "shoulda-matchers", :git => "https://github.com/thoughtbot/shoulda-matchers"
    gem "awesome_print"
    gem "cobravsmongoose"
end

我需要env.rb(黄瓜环境)

ENV["RAILS_ENV"] = 'test'
ENV["RACK_ENV"] = 'test'

BASE_DOMAIN = "myapp.dev" #using POW

require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')

require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
require 'cucumber/rails/world'
require 'cucumber/rails/active_record'
require 'cucumber/web/tableish'
require 'cucumber/rails/rspec' 
require 'rake'

require 'shoulda'
require 'factory_girl'
require 'factory_girl/step_definitions'
require 'awesome_print'


require 'capybara/rails'
require 'capybara/cucumber'
require 'capybara/session'

在envs / test.rb中

Bundler.require(:test) #just in case I forgot something

编辑:

一些控制台输出
工厂(:型号).errors =>

#<ActiveRecord::Errors:0x10c5a6498 @base=#<ModelName id: 1, name: "Ready or not", status: 0, account_id: 2, user_id: 1, created_at: "2011-09-08 15:09:05", updated_at: "2011-09-08 15:09:05", description: "Things are not as they used to be", value: #<BigDecimal:10cb2c188,'0.12345E5',9(18)>, category_id: nil, allow_downloads: true, visibility: 1, locked: nil>, @errors=#<OrderedHash {}>>

在运行时查看控制台,这个对象是INSERT INTO命令…但是有这样的:

RELEASE SAVEPOINT active_record_1
  SQL (1.3ms)   ROLLBACK

我觉得可能是导致问题的原因……某种先发制人的回滚.

试试这个:

在env.rb中

require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.strategy = nil
网友评论