Mic*_*ant 5 ruby rspec ruby-on-rails
我使用rails 3.1 + rspec和工厂女孩.
我对必填字段(validates_presence_of)的验证工作正常.我如何让测试将这个事实用作"成功"而不是"失败"
规范是:
describe "Add an industry with no name" do
context "Unable to create a record when the name is blank" do
subject do
ind = Factory.create(:industry_name_blank)
end
it { should be_invalid }
end
end
Run Code Online (Sandbox Code Playgroud)
但我失败了:
Failures:
1) Add an industry with no name Unable to create a record when the name is blank
Failure/Error: ind = Factory.create(:industry_name_blank)
ActiveRecord::RecordInvalid:
Validation failed: Name can't be blank
# ./spec/models/industry_spec.rb:45:in `block (3 levels) in <top (required)>'
# ./spec/models/industry_spec.rb:47:in `block (3 levels) in <top (required)>'
Finished in 0.20855 seconds
8 examples, 1 failure
Run Code Online (Sandbox Code Playgroud)
型号代码:
class Industry < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name
end
Run Code Online (Sandbox Code Playgroud)
工厂代码:
Factory.define :industry_name_blank, :class => 'industry' do |industry|
industry.name { nil }
end
Run Code Online (Sandbox Code Playgroud)
这是一个例子......主题按照惯例填充"Industry.new"
describe Industry do
it "should have an error on name when blank" do
subject.name.should be_blank
subject.valid?
subject.should have(1).error_on(:name)
#subject.errors.on(:name).should == "is required"
end
end
Run Code Online (Sandbox Code Playgroud)
最后一点是脆弱的,但你可以做到
有关语法的更多信息:http://cheat.errtheblog.com/s/rspec/