我有一個函式,如下:
async foo() : Promise<Object> {
if(...) throw new Error>
}
我應該如何測驗錯誤是否被拋出?目前我是這樣做的:
it("測驗拋出的錯誤"。async function () {
expect(async() => await foo() )。 to.throw(Error)
})
uj5u.com熱心網友回復:
你可以這樣做,如果錯誤被拋出,測驗將失敗。
const foo = async ( ): Promise<Object> => {
// If you want the test to fail increase x to 11.
const x = 0
if (x > 10) {
throw Error('Test will fail')
}
//加入有意義的代碼這只是一個例子。
return { some: 'object' }
}
it('testing for error thrown', async ( ) => {
const object = await foo()
expect(object).toEqual({ some: 'object' })
})
uj5u.com熱心網友回復:
試一下:
it("測驗錯誤拋出"。async function(){
await expect(foo(). rejects.toThrow(Error)
})
uj5u.com熱心網友回復:
既然你提到了chai-as-promised,你可以使用:
expect(promise).to.end.be rejected
或者:
promise.should.be.rejected
還有rejectedWith()可以讓你指定Error類/構造器。
這里有一個演示:
。mocha.setup('bdd'/span>)。
mocha.checkLeaks()。
let { expect } = chai;
chai.should()。
let chaiAsPromised = module.exports; /* hack由于缺乏UMD檔案,僅用于SO */。
chai.use(chaiAsPromised)。
async function foo(){
throw new Error()。
}
describe('Asynchronous Function', function() {
it('Expect and Eventually', function() {
return expect(foo()) 。 to.eventually.be.rejected;
})
it('With Should'/span>, function(){
return foo().should.be.rejected;
});
});
mocha.run();
.as-console{
display: none ! important;
}
<script>/span>
window。 module = {}; function require(){ return {}. }; /* hack由于缺乏UMD檔案,僅用于SO */。
</script>>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/chai-as-promised.min.js"/span>> </script>>
<script src="https://cdnjs. cloudflare.com/ajax/libs/mocha/9.1.1/mocha.min.js"></script>/span>
<script src="https://unpkg.com/[email protected]/chai.js"/span>> </script>>
<link rel=" stylesheet" href="https://unpkg. com/mocha/mocha.css" />。
<div id="mocha"/span>> </div>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307933.html
標籤:
上一篇:型別化介面的動態屬性
