Her*_* D. 15 activerecord rspec ruby-on-rails callback
如何测试以下示例?
class Post < ActiveRecord::Base
belongs_to :discussion, touch: true
end
Run Code Online (Sandbox Code Playgroud)
zet*_*tic 15
您可以设置消息期望:
it "should touch the discussion" do
post = Factory.build(:post)
post.discussion.should_receive(:touch)
post.save!
end
Run Code Online (Sandbox Code Playgroud)
这个例子使用Factory Girl,但你也可以使用灯具或模拟器.
如果你要做的就是声明touch: true
你的关联上设置了该选项,那么你可以执行以下操作:
describe Post do
it { should belong_to(:discussion).touch(true) }
end
Run Code Online (Sandbox Code Playgroud)
一般来说,为了测试回调,请继续阅读.
这里的所有其他答案都有两个缺陷:
它们需要点击数据库,这可能很慢.
它们不确定在a期间调用哪个回调save!
相反,使用Shoulda Callback Matchers,它不需要数据库命中,你可以指定你正在测试哪个回调存在.
使用Bundler 安装Shoulda回调匹配器:
group :test do
gem "shoulda-callback-matchers", "~> 1.0"
end
Run Code Online (Sandbox Code Playgroud)
it { should callback(:some_method).after(:save) }
Run Code Online (Sandbox Code Playgroud)
感谢Beat写这个伟大的图书馆.
归档时间: |
|
查看次数: |
11462 次 |
最近记录: |