我有一個函式可以回傳最大數量的引數變體串列,如果引數超過 5 個,它將引發錯誤:
if (params.length > 5) {
throw new Error('Too many arguments');
}
當我們在 Jasmine 中為單元測驗撰寫測驗用例時,我們如何期望這種錯誤用例的值(以便測驗用例成功 - 綠色),因為它不是函式的回傳值?這是我在測驗中的代碼:
const myLocalVariable1 = require('../src/get-bigest-number');
describe('CommonJS modules', () => {
it('should import whole module using module.exports = getBiggestNumber;', async () => {
const result = myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7);
expect(result).toBe(new Error('Too many arguments'));
});
});
uj5u.com熱心網友回復:
我認為它應該是這樣的(不要將其分配給結果然后斷言結果):
expect(myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7)).toThrow();
您也可以使用 try/catch 以普通的 JavaScript 方式執行此操作:
it('should import whole module using module.exports = getBiggestNumber;', async () => {
try {
const result = myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7);
} catch (e) {
expect(e.message).toBe('Too many arguments');
// Not sure about the below one but you can try it. We have to use .toEqual and not .toBe since it's a reference type
expect(e).toEqual(new Error('Too many arguments');
}
});
uj5u.com熱心網友回復:
有 Jasmine 匹配器toThrow可用于檢查是否引發了錯誤。您可以選擇將錯誤訊息作為引數傳遞,以檢查您是否收到預期的錯誤,而不是其他錯誤。
expect(myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7)).toThrow(
'Too many arguments'
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461171.html
標籤:javascript 单元测试 茉莉花
