Ruby on rails 我怎样才能让这个断言通过?
我创建了一个自定义异常,当我达到Amazon SES的SimpleEmailService的最大发送速率时,我希望引发该异常。关于API的任何信息都不需要知道,但下面是尝试执行正在发生的事情的代码: 测试文件:Ruby on rails 我怎样才能让这个断言通过?,ruby-on-rails,mocha.js,minitest,Ruby On Rails,Mocha.js,Minitest,我创建了一个自定义异常,当我达到Amazon SES的SimpleEmailService的最大发送速率时,我希望引发该异常。关于API的任何信息都不需要知道,但下面是尝试执行正在发生的事情的代码: 测试文件: mailer_test.rb it 'should not resend an email when ses limit has been reached' do assert_raise Reverificaton::Process::SesMaxSendLimit
mailer_test.rb
it 'should not resend an email when ses limit has been reached' do
assert_raise Reverificaton::Process::SesMaxSendLimit do
Reverification::Process.expects(:ses_limit_reached?).returns(true)
end
AWS::SimpleEmailService.any_instance.expects(:send_email).never
Reverification::Mailer.resend_soft_bounced_notifications
end
这是我的代码文件:
process.rb
module Reverification
class Process
class SesMaxSendLimit < Exception; end
class << self
def send_email
raise SesMaxSendLimit if ses_limit_reached?
end
end
end
end
为什么不提出例外?我模拟了
ses\u limit\u reacted?
以返回true
,我确信我的范围是正确的。问题出在哪里?您需要在assert\u raise
块中设置将触发该异常的代码。我假设这是块后的两个语句,因此,你应该有以下内容,而不是你所拥有的内容:
it 'should not resend an email when ses limit has been reached' do
assert_raise Reverificaton::Process::SesMaxSendLimit do
Reverification::Process.expects(:ses_limit_reached?).returns(true)
AWS::SimpleEmailService.any_instance.expects(:send_email).never
Reverification::Mailer.resend_soft_bounced_notifications
end
end
您需要在
assert\u raise
块中包含将触发该异常的代码。我假设这是块后的两个语句,因此,你应该有以下内容,而不是你所拥有的内容:
it 'should not resend an email when ses limit has been reached' do
assert_raise Reverificaton::Process::SesMaxSendLimit do
Reverification::Process.expects(:ses_limit_reached?).returns(true)
AWS::SimpleEmailService.any_instance.expects(:send_email).never
Reverification::Mailer.resend_soft_bounced_notifications
end
end