在柏树中,because() 函数在哪里?

In cypress, where is the because() function?

使用 chai 断言编写 cypress 测试,我应该如何在测试输出中揭示断言背后的原因?我的测试输出清楚地描述了失败的地方,但是没有上下文信息,也没有简单的方法可以直接找到测试脚本中失败断言的行号。我错过了什么?

使用屏幕截图将回答您的问题。

Cypress 会在测试失败时默认生成屏幕截图(可以通过在配置中添加 "screenshotOnRunFailure":false 来关闭此行为)。这些屏幕截图可在此处找到:cypress/screenshots

屏幕截图捕获了测试 describe()it() 和失败的具体操作。如果断言失败,它甚至会提到预期的值和检索到的值。

屏幕截图中的这三个输出将为您提供测试中失败的确切位置。

您可以像这样向 expect(...).to... 式断言添加上下文:

expect(true).to.eq(true, 'should equal itself')

据我所知,没有办法向 .should() 风格的断言添加上下文。

好像什么都没提供,但是做起来真的很简单。这是一个 because() 自定义命令,它只是 将它的参数打印到命令日志 ,然后是 returns 上一个主题,因此您可以链接它。

// sby add context to ouput...
Cypress.Commands.add("because", { prevSubject: 'true'}, (subject, options) => { 
    Cypress.log({
        message: options
    });
    return subject;
})

使用它...

cy.get("input#date").because("today is today").should("have.value", localToday);

这给了你...

我还是这个行业的新手,但我喜欢这个解决方案,因为它很流畅,提高了输出的清晰度,而且当出现问题时我可以更快地找到代码行。