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