gpt4 book ai didi

ruby-on-rails - Rspec:测试以确保不发送电子邮件

转载 作者:行者123 更新时间:2023-12-03 16:20:17 25 4
gpt4 key购买 nike

我正在运行测试以确保电子邮件不会发送给某些用户:

it "does not send reminders to users who are not subscribed" do
expect(ReminderMailer).not_to receive(:send_reminder).with("whatever", user.id).and_return(double(deliver_now: true))
book.send_reminders("whatever", user.id)
end

书.rb
def send_reminders(medium, user_id)
ReminderMailer.send_reminder(medium, user_id).deliver_now
end

但目前的测试表明:

and_return is not supported with negative message expectations



如果我删除 and_return 部分:
it "does not send reminders to users who are not subscribed" do
expect(ReminderMailer).not_to receive(:send_reminder).with("whatever", user.id)
book.send_reminders("whatever")
end

然后测试失败,因为:

undefined method `deliver_now' for nil:NilClass



如何测试未调用具有特定参数的操作邮件程序方法?

最佳答案

您的代码存在一些问题:

  • 传递给方法 send_reminders 的参数数量似乎是错误的(您只传递 1 个参数“随便”但没有用户 ID)
  • 我没有看到任何过滤用户的条件,是在 ReminderMailer 的方法 send_reminder 中吗?所以它无论如何都会调用send_reminder,只是不会发送邮件,对吧?这不是你所期望的。

  • 如果是这样,你可以试试这个:
    expect {
    book.send_reminders("whatever")
    }.not_to change(ActionMailer::Base.deliveries, :count)

    它将期望没有实际发送邮件。祝你好运,兄弟!

    关于ruby-on-rails - Rspec:测试以确保不发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34427605/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com