簡體   English   中英

jasmine expectedAsync for async function 不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM