3

当我使用 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>

违规行显示测试控制器找不到夹具:

@building = buildings(:one)

mongoid 生成器非常好,可以创建固定装置,以test/fixtures/buildings.yml表明与脚手架功能测试的整个想法的某种程度的合作。

是否有一些配置设置或我需要更改以使功能测试加载 mongoid 的装置?或者脚手架功能测试是否会因 mongoid 而失败?(如果是这样,为什么 mongoid 还要费心创建夹具文件?)

4

3 回答 3

3

不是为了个人推广,而是因为我多次被这个问题困住,而且我认为它可能会帮助很多其他人,所以我创建mongoid-fixture_setgithub

它的工作原理或多或少相同ActiveRecord::FixtureSet,因为我移植了很多代码,你只需要将它自己绑定到测试类:

class ActiveSupport::TestCase
  include Mongoid::FixtureSet::TestHelper
  self.fixture_path = "#{Rails.root}/test/fixtures"
end

'lib/rails/test_help.rb'ActiveRecord中 gem 中的 rails也做了同样的事情railties

于 2015-01-05T11:18:28.043 回答
1

Mongoid 不支持开箱即用的固定装置(来源)。我建议你放弃固定装置,走工厂路线。factory_girl是一个很好的选择。

于 2013-03-21T02:21:01.533 回答
0

是的,我认为固定装置是 ActiveRecord 的一部分,而您没有(“ rails new tddapp --skip-active-record”)。

不过, FactoryGirl是一个非常简单的过渡。可惜它没有开箱即用。

于 2014-05-23T21:50:01.800 回答