在rspec中设置和跳过回调

时间:2015-10-28 10:47:52

标签: ruby-on-rails rspec

我的模型中定义了一个回调

 after_commit :method, on: [:create, :update]

在我的测试中,我想使用set_callback方法禁用此回调。我该怎么办?

2 个答案:

答案 0 :(得分:1)

set_callback用于添加对模型的回调: http://apidock.com/rails/ActiveSupport/Callbacks/ClassMethods/set_callback

我认为skip_callback将在这里使用: http://apidock.com/rails/ActiveSupport/Callbacks/ClassMethods/skip_callback

你会这样称呼:

SomeModel.skip_callback(:commit, :after, :method)

它经常在测试工厂中使用,例如跳过名为before_save的{​​{1}}方法:

some_method

答案 1 :(得分:-1)

对于名为SomeModel的任何模型,您可以使用回调类型调用方法skip_callback

SomeModel.skip_callback(:after_commit)

然后,您在SomeModel记录上执行的任何操作都将在没有after_commit回调的情况下完成。

文档:http://apidock.com/rails/ActiveSupport/Callbacks/ClassMethods/skip_callback