我正在使用 Rails 3.2 并将我的gemfile设置为:
# Testing Gems
gem "factory_girl_rails", :group => :test
group :development, :test do
gem "capybara"
gem "rspec-rails"
gem "guard-rspec"
gem "ruby_gntp", :require => false
gem "addressable"
gem "launchy"
end
但是,Factory Girl 坚持将测试记录保存到我的开发数据库而不是测试数据库。 请注意,我使用guard通过shell运行测试。
这是我的database.yml中的内容:
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
我知道我的问题类似于这个问题:Factory girl saving records in my development database但我正在做他所做的一切,但它仍然不适合我。
我还运行了bundle update
,bundle install
,bundle install --without test
,然后再次bundle install
。我原本以为这是一个Gemfile.lock问题,但我所做的一切都没有效果。
有人有什么想法吗?
我所有的工厂都在使用development.sqlite3数据库,但这是一个例子:
FactoryGirl.define do
factory :saddle, :class => Saddle do
name "Carlton"
saddle_category_id 2
description "This is a saddle description"
details "Saddle details will go here!"
best_uses "List of best uses should go here."
price 3025.00
end
end
保存到我的数据库的测试代码只是saddle = Factory(:saddle)
。
答案 0 :(得分:1)
你有同样的问题。看看你的Gemfile:
group :development, :test do
它也为:test
加载了所有这些宝石。删除那部分,你应该好好去。
答案 1 :(得分:0)
您是否尝试在命令行中定义RAILS_ENV
:
rake test RAILS_ENV=test
答案 2 :(得分:0)
我看到你得到了答案here。问题在于使用==
而不是=
。
我刚刚遇到了类似的问题(Rspec 3)。如您所知,文件spec/rails_helper.rb
和字符串ENV["RAILS_ENV"] ||= 'test'
在里面。首先,我认为它已经设置了错误的值,并试图用ENV["RAILS_ENV"] = 'test'
替换它,但它没有帮助我。
然后我将此字符串移动到spec/spec_helper.rb
并且它正常工作。我无法解释这种行为,但它确实有效。