@request_offer = RequestOffer.new(request_offer_params)
if @request_offer.save
RequestOfferMailer.email_team(@request_offer).deliver_later
end
benim denetleyicisi Spec, bunu test etmek istiyorum
benim RequestOfferMailer, resource @request_offer parametresiyle email_team yöntemini kullanarak çağrılır.Kullanıcı istediğimde (XXX). (YYY) .with (ZZZ) ile almak istediğimde, tek yolu POST isteğini yapmadan önce beklentimi bildirmekti. Ancak, ZZZ bu POST isteğiyle yaratıldı, bu yüzden beklentimi önceden belirlemem mümkün değil.
# Set expectation first
message_delivery = instance_double(ActionMailer::MessageDelivery)
# ZZZ used in .with() does not exist yet, so it won't work
expect(RequestOfferMailer).to receive(:email_team).with(ZZZ).and_return(message_delivery)
expect(message_delivery).to receive(:deliver_later)
# Make POST request that will create ZZZ
post :create, params
Bu sorunun nasıl çözüleceği hakkında bir fikriniz var mı?
İdeal olarak bundan daha fazlasını test ederim. Bununla birlikte, bağlantınız bir çözüm olabilecek bir şey sunar, kullanıcı bir müşteri eşleştiricisi: https://relishapp.com/rspec/rspec-mocks/v/3-0/docs/setting-constraints/matching-arguments#using-a- özel-matcher Ben de bir RequestOffer bir örneğini de e-posta şablonunda gerekli benim durumumda telefon_numarası ve e-posta gibi, önemli öznitelikleri eşit olduğunu kontrol ederek tanımlayabilirsiniz. Birisinin daha basit bir çözümü olup olmadığını görelim, ama ipucu için şimdiden teşekkür ederim! –