gpt4 book ai didi

javascript - 使用 Promise 使异步测试用例失败

转载 作者:行者123 更新时间:2023-11-28 01:01:51 24 4
gpt4 key购买 nike

我开始使用 Jasmine 对严重依赖于 Promise 的 JavaScript 库进行单元测试。我需要异步测试用例失败,并且想编写如下内容:

describe("An async test suite", function () {
it("should fail asynchronously", function (done, fail) {
var promise = myLibraryCall();
promise.then(done, function(reason) { fail(reason); });
});
});

但是,据我所知,没有任何类似于 fail 调用的东西。我不能在异步错误情况下抛出异常,因为它没有被 Jasmine 捕获 - 我得到的只是最终的通用超时。解决这个问题的最佳方法是什么?

最佳答案

无需修改 Jasmine 本身,简单的解决方案是围绕 expectcustom matcher 的组合创建一个包装器。因给定消息而失败。

function endTestAfter(promise, done) {
var customMatchers = {
toFailWith: function () {
return {
compare: function (actual, expected) {
return {
pass: false,
message: "Asynchronous test failure: " + JSON.stringify(expected)
};
}
}
}
};
jasmine.addMatchers(customMatchers);
promise.done(done, function (reason) {
expect(null).toFailWith(reason);
done();
});
}

这会产生以下测试套件代码:

describe("An async test suite", function () {
it("should fail asynchronously", function (done, fail) {
var promise = myLibraryCall();
endTestAfter(promise, done);
});
});

关于javascript - 使用 Promise 使异步测试用例失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25534049/

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