测试使用await Karma+Jasmine JS的异步函数

问题描述 投票:0回答:1

我尝试在 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()
,但这不起作用,它无法解决第一个等待问题。

javascript angularjs testing async-await karma-jasmine
1个回答
0
投票

也许尝试下面的代码,从这里得到它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();
}));
© www.soinside.com 2019 - 2024. All rights reserved.