나는 HABTM Preferences
인 Person
클래스를 가지고 있습니다 - 환경 설정을 추가하거나 제거 할 때 제 3 자 API에 알리는 메소드를 호출해야합니다.레일에서 HABTM after_add/after_remove 콜백 테스트 3.2
는 지금 내 사람 클래스는 다음과 같습니다
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
그러나이 작동하지 않습니다
class Person < ActiveRecord::Base
has_and_belongs_to_many :preferences, :after_add => :send_communication_preference_update
def send_communication_preference_update(preference)
...
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'를 배치해야합니다 답변으로 당신의 코멘트를 추가하고 I하시기 바랍니다 – gotva
을 할당 호출하기 전에 당신에게 정답을 줄 것입니다. – Ash