多个异步测试茉莉花
Multiple async test jasmine
从上周开始我就遇到了 Jasmine 测试的问题。我发现这个问题是从哪里来的,但我不知道如何解决它。
这里是代码:
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);
});
如果我对第一个测试发表评论,我的第二个测试就会成功,否则我会出现此错误:
预期为假。
对我来说,第二个测试使用第一个 "done"。
我该如何重置它?
PS : 对不起,我的英语不是我的母语。
感谢您的帮助。
几个注意事项:
test中的setTimeout不正常,jasmine有自己的timeout和expect in timeout是重复的。
如果您使用真实后端或一些模拟,则从示例中看不出明显。使用 $httpBackend 进行模拟响应,您的测试会更快。
第一个测试包含错误。回调 setSuccessFnc 有参数 isItDone - 它实际上是在测试开始时 "override" var isItDone
定义的局部变量。
如果回调被调用,回调中的局部isItDone被设置为true并且回调中的期望被实现。
但是超时中的第二个断言与 var isItDone
一起工作,这仍然是错误的。
结果取决于更早发生的事情。
这应该有帮助
model.setSuccessFnc(function() {
isItDone = true;
expect(isItDone).toBe(true);
done();
});
从上周开始我就遇到了 Jasmine 测试的问题。我发现这个问题是从哪里来的,但我不知道如何解决它。
这里是代码:
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);
});
如果我对第一个测试发表评论,我的第二个测试就会成功,否则我会出现此错误:
预期为假。
对我来说,第二个测试使用第一个 "done"。 我该如何重置它?
PS : 对不起,我的英语不是我的母语。
感谢您的帮助。
几个注意事项:
test中的setTimeout不正常,jasmine有自己的timeout和expect in timeout是重复的。
如果您使用真实后端或一些模拟,则从示例中看不出明显。使用 $httpBackend 进行模拟响应,您的测试会更快。
第一个测试包含错误。回调 setSuccessFnc 有参数 isItDone - 它实际上是在测试开始时 "override" var isItDone
定义的局部变量。
如果回调被调用,回调中的局部isItDone被设置为true并且回调中的期望被实现。
但是超时中的第二个断言与 var isItDone
一起工作,这仍然是错误的。
结果取决于更早发生的事情。
这应该有帮助
model.setSuccessFnc(function() {
isItDone = true;
expect(isItDone).toBe(true);
done();
});