在我的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
有没有办法强制函数只读取每个主题和每个用户的特定电子邮件?
答案 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
会话。