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

mail-listener2 - How to prevent function from reading wrong emails?

在我的 E2E 测试中,我使用 mail-listener2 来检索电子邮件。它工作正常,除了一个让我发疯并且无法解决的问题...我一直在搜索并发现了与此 library/package 有关的不同主题和问题,但无法真正找到修复那。

以下:

我在多个 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

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

是的,您可以在 node-imapmail-listener2 使用)上找到此文档。在该包中的 search 上搜索 paragraph/bullet,这里有一个片段可以帮助您找到它:

For criteria types that require arguments, use an array instead of just the string criteria type name (e.g. ['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']],
});

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