You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7中assert_enqueued_email_with使用问题求助

问题解决:assert_enqueued_email_with 匹配失败

核心原因

你用UserMailer.with(...)传递的参数会被封装到邮件任务的params字段中,而测试代码里错误地使用了args:选项来匹配——args:对应的是调用邮件方法时的位置参数,但你的send_mail_to_subscriptions方法并没有接收位置参数,所以入队任务里的args是空数组,自然匹配失败。

修正后的测试代码

把测试里的args:替换成params:,同时确保参数类型一致(比如错误提示里website_id在期望中是字符串,实际入队的是数字,要对齐类型):

assert_enqueued_email_with UserMailer, :send_mail_to_subscriptions, params: {website_id: lastWebsiteId, subject: randomSubject, body: randomBody}

验证逻辑

对比你提供的入队任务详情:

  • 实际入队的参数结构是{params: {website_id: 310450396, ...}, args: []}
  • 原测试用args:去匹配,相当于在找args字段里的内容,而正确的匹配对象是params字段里的键值对

这样修改后,测试就能正确匹配到入队的邮件任务了。

内容的提问来源于stack exchange,提问作者Emmanuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:30:17