【发布时间】:2016-04-22 00:30:44
【问题描述】:
我正在使用 RSpec 为 Cookbook 模型编写模型测试。每个用户has_many 食谱,每个食谱belongs_to 一个用户。为了确保在没有用户的情况下无法创建Cookbook,我编写了以下测试:
it "is invalid without a user" do
expect(FactoryGirl.build(:cookbook, user: nil)).to be_invalid
end
但是,在运行 rspec 时,我得到以下输出:
1) Cookbook is invalid without a user
Failure/Error: expect(FactoryGirl.build(:cookbook, user: nil)).to be_invalid
NoMethodError:
undefined method `cookbooks' for nil:NilClass
那么,为了测试是否引发了错误,我进行了这样的测试:
it "is invalid without a user" do
expect{FactoryGirl.build(:cookbook, user: nil)}.to raise_error(NoMethodError)
end
但是,该测试也失败并显示以下输出:
1) Cookbook is invalid without a user
Failure/Error: expect{FactoryGirl.build(:cookbook, user: nil)}.to raise_error(NoMethodError)
expected NoMethodError but nothing was raised
如果它意味着什么,这里是食谱的工厂:
require 'faker'
FactoryGirl.define do
factory :cookbook do |f|
f.title "#{Faker::Name.first_name}'s recipes"
f.description "#{Faker::Name.last_name}'s favorite recipes."
f.user 1
end
end
我应该如何编写模型测试以确保在创建Cookbook 时需要用户?
【问题讨论】:
-
请发布您的食谱课程
标签: ruby-on-rails ruby rspec