【发布时间】:2025-12-20 16:35:11
【问题描述】:
我有Cypress.io 测试使用简单的Cypress task 将一些表信息记录到终端。例如我有一个这样的测试:
it("Writes some console logs and checks a val", () => {
cy.task("rowLog", { id: 1, name: "foo", type: "bar" });
let one = 1;
expect(one).to.equal(2);
});
任务,“rowLog”是这样的:
module.exports = (on, config) => {
on("task", {
rowLog(data) {
// use node.js console.table to pretty print table data:
console.table(data);
return null;
},
}
但是如果我通过Cypress run 无头运行赛普拉斯,rowLog 的结果将不会显示在我的终端中。这是因为测试会失败。如果我们切换测试让它通过,那么它就会显示出来。
但是我刚刚意识到,如果我将rowLog 视为如下所示的异步。它将将结果打印到终端:
it("Writes some console logs and checks a val", () => {
// add a .then to task:
cy.task("rowLog", { id: 1, name: "foo", type: "bar" }).then(() => {
let one = 1;
expect(one).to.equal(2);
});
});
这不是我对文档的期望。他们说:
cy.task() 产生由 pluginsFile 中的任务事件返回或解析的值。 (source)
并且一项任务可以产生一个承诺或一个价值。
我是赛普拉斯的新手——我有什么遗漏或做错了吗?我希望能够不必将我的任务与.then 语句链接起来,如果它只是同步的东西,比如编写输出以确保所有内容都发送到我的终端。
【问题讨论】:
标签: cypress