【问题标题】:Writing a spec for sending a mail via API编写通过 API 发送邮件的规范
【发布时间】:2013-08-23 08:42:49
【问题描述】:

我希望在生成Invite 时使用后台进程发送电子邮件。

我目前拥有的是这种方法:Invite 模型具有方法send_mail,它使用 Mandrill API 和 gem 发送电子邮件。它还有 queue_mail 方法使用 Resque 将带有邀请 ID 的 InviteMailer 添加到队列中。

但是……由于我很难为此编写规范,我认为这可能不是发送邮件的最佳方法。

我主要想要和需要测试的:

  • 邮件是否已添加到队列中?
  • InviteMailer 工作正常吗?
  • 邮件是否包含正确的重要信息?

重要信息是:发送给正确的人,包含指向特定站点的链接和一些特定的数据/文本;我也不确定如何让当前主机访问链接。

我认为这并不罕见,所以我想知道最佳做法是什么。

我的测试环境:rspec、capybara、factory girl。我已经添加了 VCR,用于缓存 API 请求。

【问题讨论】:

    标签: ruby-on-rails rspec tdd ruby-on-rails-4 bdd


    【解决方案1】:

    您可以使用Mailcatcher 伪造您的邮件服务器,并通过 Web API 检查收到的邮件:

    特点

    • 捕获所有邮件并将其存储以供显示。
    • 显示 HTML、纯文本和源版本的消息(如果适用)。
    • 重写 HTML 以显示嵌入的内嵌图像/等,并在新窗口中打开链接。 (目前非常基础)
    • 可以发送 HTML 以供 Fractal 分析。
    • 列出附件并允许单独下载部分。
    • 下载原始电子邮件以在您的本地邮件客户端中查看。
    • 用于覆盖默认 SMTP/HTTP IP 和端口设置的命令行选项。
    • 如果您的浏览器支持 WebSockets,邮件会立即出现,否则每 30 秒更新一次。
    • 收到新消息时发出咆哮通知。
    • 作为后台运行的守护程序运行。
    • Sendmail-analogue 命令,catchmail,使得使用 PHP 中的 mailcatcher 变得更加容易。
    • 在 EventMachine 中非常简单地编写,易于挖掘和更改。

    如何

    1. gem install mailcatcher
    2. mailcatcher
    3. 转到http://localhost:1080/
    4. 通过smtp://localhost:1025发送邮件

    API

    相当 RESTful 的 URL 架构意味着您可以下载消息列表 在来自/messages 的 JSON 中,每条消息的元数据都带有 /messages/:id.json,然后是相关部分 /messages/:id.html/messages/:id.plain 用于默认 HTML 和纯文本版本,/messages/:id/:cid 个人 按 CID 的附件,或带有 /messages/:id.source 的整个消息。

    【讨论】:

      猜你喜欢
      • 2016-10-28
      • 2012-08-19
      • 1970-01-01
      • 2018-07-12
      • 2021-04-18
      • 2017-01-29
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多