Rspec & FactoryGirl : 防止生成电子邮件

Rspec & FactoryGirl : prevent from generating emails

最近我在 运行 rspec 测试生成我的邮件程序视图时遇到错误,这让我意识到对于某些测试,由于工厂(例如我创建管理员 => 设计生成确认电子邮件)。

当测试的目的不是测试是否发送电子邮件时,有没有办法防止生成一些电子邮件?

您可以做几件事。首先,请确保您拥有:

config.action_mailer.delivery_method = :test 

in config/environments/test.rb(我很确定这是默认设置)。这确保电子邮件不会 发送 。然而,这仍然会生成它们,然后将它们放在一个数组中 (ActionMailer::Base.deliveries).

要阻止它们生成,您可以模拟您的邮件程序方法。类似于:

allow(MyMailer).to receive(:my_method).and_return { double("Mailer", :deliver => nil)}