如果解析测试电子邮件花费的时间太长,我该怎么办?

What can I do if parsing a test email is taking too long?

我计划使用 Cypress 和 MailHog 测试确认电子邮件。原则上,一些属性和值应该出现在那里。在大约 200 K 大小的测试邮件中,以下代码完美运行。

it.only('The body of a confirmation mail shall contain strings (Kaufland)', () => {

    cy.mhGetMailsBySubject('Deine Bestellung bei TODO.de')
      .mhFirst()
      .mhGetBody()
      .should('contain', 'Kunden-Nr')
      .should('contain', 'Bestelldatum')
      .should('contain', 'Bestellnummer')
      .should('contain', 'Zwischensumme')
      .should('contain', 'Versandkosten')
      .should('contain', 'Gesamtpreis')
      .should('contain', 'Lieferadresse')
      .should('contain', 'Rechnungsadresse')
      .should('contain', 'Widerrufsbelehrung')
  })

现在,我有另一个客户的电子邮件,它有点笨重,非常复杂和分层。桌子上的桌子。但是,它的大小也只有324K。

虽然第一个客户的邮件在几秒钟内被检查,但 Cypress 在解析第二封电子邮件时挂断,或者超过 2 分钟后仍没有结果。

我在这里有什么选择?

我自己解决了。之所以等这么久,是因为我们要找的值不存在,所以测试失败了。我可以在 cypress.json 文件中设置长度:

{
  "defaultCommandTimeout": 60000,
  "responseTimeout": 30000,
  "requestTimeout": 30000
}

还有一点要注意,.should() 会在失败时重试 - 但它实际上只对异步页面有用。

由于您已经有了完整的文本,请将 .should() 更改为 .then(),这样不会重试,因此失败会更快。

cy.mhGetMailsBySubject('Deine Bestellung bei TODO.de')
  .mhFirst()
  .mhGetBody()
  .then(body => {
    expect(body).to.contain('Kunden-Nr')  //  no retry 
    // etc