gpt4 book ai didi

node.js - Testcafe:如何在 4xx 或 5xx 响应上出错?

转载 作者:搜寻专家 更新时间:2023-10-31 23:10:41 29 4
gpt4 key购买 nike

我正在开发一个对外部资源进行大量调用的旧版应用。我正在尝试重构这个应用程序,我已经写了 testcafe在我犯错时帮助通知我的测试。我没有使用 --skip-js-errors 运行我的测试,但是当我收到 404 错误并且控制台打印出来时:

enter image description here

测试不会停止。我希望像这样的错误是我被告知的。 如何使 4xx 和 5xx 网络响应无法通过 testcafe?如果重要的话,我使用的是 angular 1.2。如果可以的话,我会更改所有远程调用以在 4xx 或 5xx 上引发异常,但这是我不理解的遗留代码,我确信这样做会破坏功能。

最佳答案

我建议你扩展 RequestLogger检查请求。您可以根据请求状态抛出错误。例如:

import EventEmitter from 'events';                                                                                                           
import { RequestHook } from 'testcafe';

fixture `test`
.page('https://testcafe.devexpress.com/Details2/')

class FailedRequestsLogger extends RequestHook {
constructor (...args) {
super(...args);

this.events = new EventEmitter();
this.failedRequestPromise = new Promise(resolve => this.events.once('failed-request', resolve));
}

onRequest (request) {
}

onResponse (response) {
if (response.statusCode >= 400)
this.events.emit('failed-request', response.statusCode);
}

waitForFailedRequest (action) {
return Promise.race([
action(),
this.failedRequestPromise.then(statusCode => Promise.reject(new Error(`Request failed with the ${statusCode} status code`)))
])
}
}

const logger = new FailedRequestsLogger();

test.requestHooks(logger)('test', async t => {
await logger.waitForFailedRequest(async () => {
await t.click('body');
await t.wait(10000);
});
});

关于node.js - Testcafe:如何在 4xx 或 5xx 响应上出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52429769/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com