tom*_*nek 1 validation rspec ruby-on-rails ruby-on-rails-3
这是我的验证测试,我想找到编写模型规范的最佳方法,特别是验证。但我对下面的代码有问题。
require 'spec_helper'
describe Ad, :focus do
let(:ad) { Ad.sham!(:build) }
specify { ad.should be_valid }
it "not creates a new instane given a invalid attribute" do
ad = Ad.new
ad.should_not be_valid
end
[:title, :category_id, :email, :ad_content, :name, :price].each do |attr|
it "should require a #{attr}" do
subject.errors[attr].should include("blank")
end
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行此规范时,我收到此错误:
5) Ad should require a name
Failure/Error: subject.errors[attr].should include("blank")
expected [] to include "blank"
Diff:
@@ -1,2 +1,2 @@
-blank
+[]
# ./spec/model/ad_spec.rb:15:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
这里的问题是您在检查错误之前没有调用valid? 该示例。您在上一个示例中(间接)调用了它,但不是您断言有错误的那个。
正确的方法是这样的:
[:title, :category_id, :email, :ad_content, :name, :price].each do |attr|
it "should require a #{attr}" do
subject.valid?
subject.errors[attr].should include("blank")
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |