mail-listener2 - 如何防止函数读取错误的电子邮件?

时间:2018-03-08 16:12:47

标签: node.js angular protractor imap

在我的E2E测试中,我正在使用mail-listener2来检索电子邮件。它工作得很好,除了一个让我发疯并且无法解决问题的问题......我一直在寻找并找到关于这个库/包的不同主题和问题,但是我无法真正找到它解决这个问题。

下列的程序:

我在多个spec文件中使用该函数(注册,登录,确认等),这意味着在检索电子邮件时,我会不时得到错误的电子邮件。换句话说,该函数读取收件箱中通常属于第一个测试的最后一封电子邮件。

或者有时电子邮件会在收件箱中稍后显示该函数正在读取它们,因此它读错了。

正如我对it()函数所期望的那样:

expect(email.subject).toEqual("subject for e-mail 1"); expect(email['headers'].to).toEqual( userEmail );

因此测试中断,并且出现以下错误:

  - Expected 'user registration' to equal 'user confirmation'.
  - Failed: Cannot read property '1' of null

  - Expected 'john.doe@foo.de' to equal 'jane.doe@foo.com'.
  - Failed: Cannot read property '1' of null

有没有办法强制函数只读取每个主题和每个用户的特定电子邮件?

1 个答案:

答案 0 :(得分:2)

是的,您可以在node-imap(由mail-listener2使用)上找到此文档。在该软件包中的search上搜索段落/项目符号,这是一个帮助您找到它的代码段:

  

对于需要参数的条件类型,请使用数组而不仅仅是字符串条件类型名称(例如['FROM','foo@bar.com'])。

在此之后,他们会列出您可以使用的其他几个搜索条件,它们对您的用户条件有to/from,对于那个条件有subject。因此,将此应用于mail-listener2,您可以在searchFilter属性中使用它:

mailListener = new MailListener({
    ...(other options),
    searchFilter: [['FROM', 'automated@message.com'], ['SUBJECT', 'subject for e-mail 1']],
});

如果您需要针对不同测试的不同搜索条件,则可以使用新的mail-listener条件为每个测试开始新的searchFilter会话。