반응형
RSpec 테스트 후 ActionMailer :: Base.deliveries 지우기
내 UserMailer 클래스에 대해 다음 RSpec 테스트가 있습니다.
require "spec_helper"
describe UserMailer do
it "should send welcome emails" do
ActionMailer::Base.deliveries.should be_empty
user = Factory(:user)
UserMailer.welcome_email(user).deliver
ActionMailer::Base.deliveries.should_not be_empty
end
end
이 테스트는 처음에는 통과했지만 두 번째 실행에서는 실패했습니다. 약간의 디버깅을 수행 한 후 첫 번째 테스트에서 ActionMailer :: Base.deliveries 배열에 항목을 추가했으며 해당 항목이 지워지지 않은 것으로 보입니다. 배열이 비어 있지 않기 때문에 테스트의 첫 번째 줄이 실패합니다.
RSpec 테스트 후 ActionMailer :: Base.deliveries 배열을 지우는 가장 좋은 방법은 무엇입니까?
AM :: Base.deliveries는 배열 일 뿐이므로 빈 배열로 초기화 할 수 있습니다. 비어있는 첫 번째 확인도 제거 할 수 있습니다.
describe UserMailer do
before { ActionMailer::Base.deliveries = [] }
it "should send welcome emails" do
user = Factory(:user)
UserMailer.welcome_email(user).deliver
ActionMailer::Base.deliveries.should_not be_empty
end
end
각 테스트 후 전달을 매우 쉽게 지울 수 있으며이를 spec_helper.rb에 추가 할 수 있습니다.
RSpec.configure do |config|
config.before { ActionMailer::Base.deliveries.clear }
end
Rails 의 올바른 이메일 구성에 대한 기사를 읽고 올바르게 테스트하는 것에 대해서도 이야기 하는 것이 좋습니다 .
Andy Lindeman이 지적했듯이 우편물 테스트를 위해 배달 지우기가 자동으로 수행됩니다. 그러나 다른 유형의 경우 단순히 , :type => :mailer
래핑 블록에 추가 하여 동일한 동작을 강제합니다.
describe "tests that send emails", type: :mailer do
# some tests
end
반응형
'Program Tip' 카테고리의 다른 글
내 배열 목록의 항목 수 계산 (0) | 2020.12.14 |
---|---|
WPF의 dataGridCells에 패딩 설정 (0) | 2020.12.14 |
Android : APK가 대상으로하는 플랫폼 버전을 찾는 방법은 무엇입니까? (0) | 2020.12.14 |
PHP의 변수에 문자열을 추가 할 수 있습니까? (0) | 2020.12.14 |
세션을 나열하려고 할 때 tmux에서 "서버에 연결하지 못했습니다"메시지가 표시되는 이유는 무엇입니까? (0) | 2020.12.14 |