我尝试在 angularjs v1.5.0 项目中使用 Karma 和 Jasmine 测试异步函数。这个异步函数 (a) 有 2 个等待,如下所示:
async function a(){
let var1 = await b()
console.log(var1)
let var2 = await c()
}
function b(){
return $http.get(url1).then(
function(response){
...
}
)
}
function c(){
return $http.get(url2).then(
function(response){
...
}
)
}
我的测试:
it('testA', inject(async function($httpBackend) {
$httpBackend.when('GET','url1').respond(200, [myresult])
$httpBackend.when('GET','url2').respond(200, [myresult])
MyController().a()
$httpBackend.flush();
}));
问题在于
$httpBackend.flush();
只是“刷新”第一个await,然后函数“a”的执行不会继续,它甚至无法到达console.log(var1)
。有人可以帮我解决这个问题吗?
我无法更改代码,我只想对该代码进行测试。
我尝试在测试中执行
await a()
,但这不起作用,它无法解决第一个等待问题。
也许尝试下面的代码,从这里得到它answer
it('testA', inject(async function($httpBackend) {
$httpBackend.when('GET','url1').respond(200, [myresult])
$httpBackend.when('GET','url2').respond(200, [myresult])
MyController().a()
try {
httpBackend.flush();
} catch (e) { }
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
}));