我正在尝试用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/#!定义制造商