【问题标题】:how to pass params in rspec when testing for a mailer method?测试邮件方法时如何在 rspec 中传递参数?
【发布时间】:2022-09-27 17:11:16
【问题描述】:
expect(UserMailer).to receive(UserMailer.addon_purchased).with(event_order_id: @event_order.id)

我正在使用上面的代码。 我需要进行哪些更改才能完成这项工作?

我的邮件方法

@event_order = EventOrder.find(params[:event_order_id])

    # TECH DEBT: why is .first relevant?
    @ticket = @event_order.addons.first.event_ticket
    if @ticket.blank?
      Rails.logger.error \"ticket purchased but no ticket found for Order# - #{@event_order.id}\"
      raise StandardError.new(\"ticket not found\")
    end
  • 你的邮件看起来怎么样?
  • @mechnicov 我的邮件是在购买产品后发送的,其中包括填写卡和支付网关是 nexiopay。但它没有显示卡片,而是向我显示\“缺少所需的请求参数:[令牌]\”。你知道吗?
  • 编程是关于代码的。没有代码是不可能帮助你的
  • @mechnicov 我已经编辑了我的代码。你现在能说吗?这里参数是空的,这就是我收到此错误的原因

标签: ruby-on-rails ruby rspec-rails


【解决方案1】:

假设addon_purchased是类方法,需要修改代码如下

expect(UserMailer).to receive(:addon_purchased).with(event_order_id: @event_order.id)

参考: https://relishapp.com/rspec/rspec-mocks/docs/basics/expecting-messages

【讨论】:

  • 我的邮件是在购买产品后发送的,其中包括填写卡和支付网关是 nexiopay。但不是显示卡,而是显示“缺少所需的请求参数:[令牌]”。你知道吗?
猜你喜欢
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多