[英]jasmine expectedAsync for async function doesn't work
我正在運行以下測試:
it("should get rejected", async done => {
class someTest {
async run(){
return this.rejectFunc();
}
async rejectFunc(){
return new Promise( (_,reject)=>{
setTimeout(()=>{
reject()
},300)
})
}
}
const test = new someTest();
spyOn(test, 'rejectFunc').and.callThrough();
test.run()
await expectAsync(test.rejectFunc).toBeRejected();
done();
});
但測試超時失敗:
錯誤:超時 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超時內未調用異步回調。
我究竟做錯了什么? 我想運行run
方法並驗證rejectFunc
被拒絕。
這是我第一次看到expectAsync
,但它預計會采用 promise 而不是 function 的名稱。
所以試試這個:
// call the function with ()
await expectAsync(test.rejectFunc()).toBeRejected();
另一種為您測試的方法是:
try {
await test.rejectFunc();
} catch (error) {
// call done here, meaning promise was rejected and therefore we can assert
// it was rejected
done();
}
編輯
const test = new someTest();
spyOn(test, 'rejectFunc').and.callThrough();
try {
await test.run();
} catch (e) {
expect(test.rejectFunc).toHaveBeenCalled();
}
done();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.