当我使用 mongoid 创建一个新的 Rails 应用程序时:
rails new tddapp --skip-active-record
cd tddapp
echo "gem 'mongoid'" >> Gemfile
bundle
rails g mongoid:config
然后生成一个简单的脚手架:
rails g scaffold building height:Integer name:String
脚手架已创建,最小应用程序运行良好。但是脚手架生成的测试失败了:
NoMethodError: undefined method `buildings' for #<BuildingsControllerTest:0x007fa6afbf78d8>
违规行显示测试 Controller 找不到夹具:
@building = buildings(:one)
mongoid 生成器非常好,可以在 test/fixtures/buildings.yml
中创建固定装置,这表明在某种程度上与脚手架的功能测试的整个想法进行了合作。
是否有一些配置设置或我需要更改的内容才能进行功能测试以加载 mongoid 的固定装置?或者脚手架功能测试是否会因 mongoid 而失败? (如果是这样,为什么 mongoid 还要费心创建 fixture 文件?)
最佳答案
不是为了个人宣传,而是因为我在这个问题上卡住了好几次,因为我认为它可能会帮助很多其他人,所以我创建了 mongoid-fixture_set
,它在 github 上可用。
它的工作原理与ActiveRecord::FixtureSet
差不多,因为我移植了很多代码,你只需要自己将它绑定(bind)到测试类即可:
class ActiveSupport::TestCase
include Mongoid::FixtureSet::TestHelper
self.fixture_path = "#{Rails.root}/test/fixtures"
end
在 'lib/rails/test_help.rb' 中的 gem railties
中,rails 为 ActiveRecord
做了同样的事情
关于ruby-on-rails - Mongoid 脚手架测试在固定装置上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488455/