有以下规格:
要求' spec_helper'
describe Place do
let(:place) { FactoryGirl.create(:place) }
subject { place }
it { expect be_valid }
describe 'when content is not present' do
before { place.content = nil }
it { expect be_valid }
end
end
此外,还有Place模型中的状态内容验证。但是这个规范并没有抛出任何异常,即使最后一条指令设置了内容'没有。有什么麻烦?谢谢。
答案 0 :(得分:1)
你只是设定了一个期望但从不打电话给任何人。 用
替换你期望的be_valid调用it { expect(subject).to be_valid }
...
it { expect(place).to be_valid }
我猜你是来自旧的语法。你可以按照你的方式编写它:
it { should be_valid }
但是较新的期望语法表现略有不同
答案 1 :(得分:0)
您有let(:place) { FactoryGirl.create(:place) }
,因此当您第一次引用place
时,它会创建一个实例(包含有效内容)。您正在更改content
,但未对其执行验证。
有几种方法可以满足您的需求:
使用您已有的工厂,而不是create
使用build
在FactoryGirl
定义无效工厂:
factory :place do
content 'valid value'
factory :invalid_place do
content nil
end
end
3)或者您可以使用attributes_for