我需要测试一个运行before_validation
的回调,但由于我只想测试回调,所以当验证失败时我不希望测试失败,而且我得到了:
ActiveRecord::RecordInvalid:
Validation failed: Preview Invalid video ID
我尝试了很多东西。我相信使用.save(:validate => false)
时不会调用我的回调方法,因为它在before_validation
上运行。
但是当我做这样的事情时:
show = FactoryGirl.build :show
show.should_receive :parse_url
show.save
我得到了
Failure/Error: show.should_receive :parse_url
(#<Show:0x007fd9954699e0>).parse_url(any args)
expected: 1 time
received: 0 times
尽管模型中有我的代码:
before_validation :parse_url, :on => :save
在方法调用旁边,我想在格式化之后检查字段。
我会非常感谢任何帮助。
答案 0 :(得分:0)
好吧,你总是可以在它触发时捕获ActiveRecord :: RecordInvalid错误,但仍然会测试你的before_validation的行为。因为你发现错误,RSpec测试不会失败。