通过cy.request在mailcatcher中获取电子邮件

时间:2019-04-25 11:54:42

标签: javascript cypress mailcatcher

我正在尝试让赛普拉斯测试中的Mailcatcher捕获电子邮件。 Mailcatcher在localhost:1080上运行,而我的应用程序在3000端口上运行。

到目前为止,我无法简单地使用cy.visit('localhost:1080),因为我已经通过cy.visit()(第二个唯一域)访问我的应用程序。所以我尝试了这个:

cy
.request('http://localhost:1080/')
.its('body') //this gives me only a list of headers

电子邮件存储在<tbody></tbody>内部,但是上面的请求使我感到<tbody>元素为空

我希望在存储电子邮件的地方看到tr。有什么建议可以做到吗?

2 个答案:

答案 0 :(得分:0)

不是我的解决方案,只是从Google和Cypress(https://github.com/cypress-io/cypress/issues/418)的github借来的:

  

电子邮件似乎是一种常见情况,可能需要   附加域。我们寻求的解决方案是使用   https://mailcatcher.me/使电子邮件在浏览器中可用   然后将代理添加到webpack-dev-server,以便可以在   与webapp相同的主机。这样,您可以将电子邮件视为   另一页,请访问它,然后单击链接。如果您需要打   后端服务器,您可以添加其他代理以使其可用   在webapp域上。

答案 1 :(得分:0)

我遇到了这种情况(与赛普拉斯进行了测试,以确保通过Mailcatcher成功发送了一封电子邮件),并采用了建议的代理请求方法。

我注意到Mailcatcher包含一个非常基本的API,使我可以通过以下URL获取已发送电子邮件的列表:

http:// localhost:1080 /消息

然后,我可以获取每封电子邮件的详细信息以及请求(将1替换为Mailcatcher电子邮件的ID):

  • http:// localhost:1080 / messages / 1.json
  • http:// localhost:1080 / messages / 1.plain
  • http:// localhost:1080 / messages / 1.html

借助此界面,代理非常简单。在我的场景中,我使用PHP作为代理,设置类似于:

  1. 在http://localhost/mailcatcher_proxy.php添加新页面
  2. mailcatcher_proxy.php中添加代码以从请求中获取参数,并使用cURL将请求返回到localhost:1080 / messages /
  3. 格式化结果并将其打印在mailcatcher_proxy.php中,以便可以通过赛普拉斯轻松对其进行测试

像魅力一样工作!