我正在使用rspec
为3级深度的嵌套模型编写模型规范测试。每个->
代表has_many
关系。
Users->Goals->Milestones
现在,我的spec/models/milestone_spec.rb
测试未通过be_valid
检查,我对此为何发生了一些小问题。
Failures:
1) Milestone
Failure/Error: it { should be_valid }
expected valid? to return true, got false
# ./spec/models/milestone_spec.rb:17:in `block (2 levels) in <top (required)>'
规范本身:
describe Milestone do
let(:user) { FactoryGirl.create(:user) }
let(:goal) { user.goals.build(content: "Loreum Ipsum", amount: "30", interval: 2) }
before do
@milestone = goal.milestones.build(amount: "20")
end
subject { @milestone }
it { should respond_to(:goal_id) }
it { should respond_to(:amount) }
# not sure why this isn't working
it { should be_valid }
可能与我创建@milestone
的方式有关吗?我试过了goal.milestones.new
,这似乎没有什么区别。在规范中,我对正确验证的字段进行了一些测试,并且运行正常。
有什么想法吗?
答案 0 :(得分:1)
试试这个:
it "should be valid" do
@milestone.valid?
puts @milestone.errors.full_messages
end
这将运行验证并为您打印验证错误,以便您可以看到正在发生的事情。