如何使用rspec+fabrication运行一个简单的测试



我正在尝试用rspec+制造进行一个简单的测试。不幸的是,没有太多关于这方面的像样的文章。

在规格/型号/event_spec.rb 中

require 'spec_helper'
describe Event do
  subject { Fabricate(:event) }
  describe "#full_name" do
    its(:city) { should == "LA" }
  end
end

符合规范/制造商/event_fabricator.rb

Fabricator(:event) do
  user { Fabricate(:user) }
  # The test works if I uncomment this line:
  # user_id 1
  city "LA"
  description "Best event evar"
end

符合规范/制造商/user_fabricator.rb

Fabricator(:user) do
  name 'Foobar'
  email { Faker::Internet.email }
end

我不断得到:

 1) Event#full_name city 
     Failure/Error: subject { Fabricate(:event) }
     ActiveRecord::RecordInvalid:
       Validation failed: User can't be blank

PS如果有人知道任何值得一读的关于开始使用rspec和制造的在线文章/教程。请告诉我

Fabricator的一个特性是它延迟生成关联,这意味着除非在Event模型上调用user访问器,否则不会生成User

看起来您的Event模型有一个需要User的验证。如果是这种情况,你需要这样声明你的制造商:

Fabricator(:event) do
  # This forces the association to be created
  user!
  city "LA"
  description "Best event evar"
end

这确保了User模型与Event一起创建,这将允许您的验证通过

请参阅:http://fabricationgem.org/#!定义制造商

相关内容

  • 没有找到相关文章

最新更新