gpt4 book ai didi

javascript - 多个异步测试 Jasmine

转载 作者:行者123 更新时间:2023-11-28 19:05:19 25 4
gpt4 key购买 nike

自上周以来,我对 Jasmine 测试遇到了问题。我找到了这个bug从哪里来,但我不知道如何解决它。

这里是代码:

it("Test the time of asynchronous call", function(done) {
var isItDone = false;
model.setSuccessFnc(function(isItDone) {
isItDone = true;
expect(isItDone).toBe(true);
done();
});
model.setId("serviceLevel");
model.getDataFromBatch("srService", "workItems", query.services, null, filter, null, true);

setTimeout(function() {
expect(isItDone).toBe(true);
done();
}, 4000);
});

it("Test retrieved data of asynchronous call", function(done) {
// var isItDone = false;
model.setSuccessFnc(function(oData, oResponse) {
var json = JSON.parse(oData.__batchResponses[0].body);

expect(json.d.results.length).toBeGreaterThan(0);
done();

});
model.setId("serviceLevel");
model.getDataFromBatch("srService", "workItems", query.services, null, filter, null, true);

});

如果我评论第一个测试,我的第二个测试就会工作,如果没有,我会遇到此错误:

预期错误为真。

对我来说,第二个测试使用第一个“完成”。我该如何重置它?

PS:抱歉,我的英语不是我的母语。

感谢您的帮助。

最佳答案

一些注意事项:

测试中的setTimeout不是平常的,jasmine有自己的超时,并且超时中的expect是重复的。

如果您使用真正的后端或一些模拟,则从示例来看并不明显。使用 $httpBackend 进行模拟响应,您的测试会更快。

第一个测试包含错误。回调 setSuccessFnc 有参数 isItDone - 它实际上是“覆盖”在测试开始时定义的 var isItDone 的局部变量。

如果调用回调,则回调中的本地 isItDone 被设置为 true,并且回调中的期望得到满足。

但是超时中的第二个断言与 var isItDone 一起使用,这仍然是错误的。

结果取决于更快发生的情况。

这应该有帮助

model.setSuccessFnc(function() {
isItDone = true;
expect(isItDone).toBe(true);
done();
});

关于javascript - 多个异步测试 Jasmine ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31782374/

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