gpt4 book ai didi

ruby-on-rails - 在 rails 3.2 上测试 HABTM after_add/after_remove 回调

转载 作者:行者123 更新时间:2023-12-01 08:07:12 31 4
gpt4 key购买 nike

我有一个 Person 类,其中 HABTM Preferences - 当添加或删除首选项时,我需要调用一个方法来通知第三方 API。

现在我的 person 类是这样的:

class Person < ActiveRecord::Base

has_and_belongs_to_many :preferences, :after_add => :send_communication_preference_update

def send_communication_preference_update(preference)
...
end

end

为了测试这一点,我有以下规范:

describe 'person.preferences #after_add' do
let(:person) { FactoryGirl.create(:person) }
let(:pref) { [Preference.find_by_preference_name("EmailMarketing")] }

it 'should trigger callback' do
person.preferences = pref
person.should_receive(:send_communication_preference_update).with(pref.first)
end
end

但是这不起作用。

即使丢失 with(pref.first) 也会导致以下相同的错误。

我得到的错误是:

Failure/Error: person.should_receive(:send_communication_preference_update).with(pref.first)
(#<Person:0x000000086297a8>).send_communication_preference_update(#<Preference preference_id: 4, preference_name: "EmailMarketing", created_at: "2014-07-08 08:31:23", updated_at: "2014-07-08 08:31:23", active: true, default_value: false>)
expected: 1 time
received: 0 times

这是为什么?

最佳答案

改变规范中的行顺序:你应该在调用分配之前放置should_receive

it 'should trigger callback' do
person.should_receive(:send_communication_preference_update).with(pref.first)
person.preferences = pref
end

关于ruby-on-rails - 在 rails 3.2 上测试 HABTM after_add/after_remove 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24627496/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com