2
我試圖在if條件滿足時創建以下方法的測試(創建DispatchMessenger的實例)。rspec測試檢查#new是否在類上調用
class Telephony
def self.receive(body, opts = {})
responder = Responder.find_by_phone(opts[:from])
if responder
msg = DispatchMessenger.new(responder)
else
send("#{opts[:from]}: #{opts[:body]}", to: Rails.configuration.backup_sms_phone)
end
end
end
在rspec中,我有這個。
describe '#receive' do
let(:responder) { create(:user, :responder, phone: '666-555-4444', name: 'Roy the Responder') }
it "creates an instance of DispatchMessenger when passed a responder's number" do
expect(DispatchMessenger).to receive(:new).with(responder)
Telephony.receive('Body', from: '666-555-4444', body: 'Testing')
end
end
當我運行測試時收到此錯誤消息。
1) Telephony#receive creates an instance of DispatchMessenger when passed a responder's number
Failure/Error: expect(DispatchMessenger).to receive(:new).with(responder)
(<DispatchMessenger (class)>).new(#<User id: 16757, email: "[email protected]", name: "Roy the Responder", phone: "6665554444", role: "responder", active: true, long: nil, lat: nil>)
expected: 1 time with arguments: (#<User id: 16757, email: "[email protected]", name: "Roy the Responder", phone: "6665554444", role: "responder", active: true, long: nil, lat: nil>)
received: 0 times with arguments: (#<User id: 16757, email: "[email protected]", name: "Roy the Responder", phone: "6665554444", role: "responder", active: true, long: nil, lat: nil>)
我想這個測試簡單地確認:如果這個特定的電話號碼傳遞到電話#收到DispatchMessenger的一個實例被創建。這是比較對象而不是比較特定屬性(即電話號碼)的對象嗎?如果是這樣,我該怎麼做呢?