1
我正在寫一些expect.js匹配器,我想測試自己的匹配器。所以我想寫正面和負面的測試。假設我寫了測試擴展到expect.js
toContainItem(name);
這樣使用;
expect(femaleNames).toContainItem('Brad'); // test fails
expect(femaleNames).toContainItem('Angelina'); // test passes
我想要做的是寫一個測試爲負的情況下,像這樣;
it('should fail if the item is not in the list', function() {
expect(function() {
expect(femaleNames).toContainItem('Brad');
}).toFailTest('Could not find "Brad" in the array');
});
我不知道如何在一個環境中,它不會失敗的含試運行失敗我測試代碼。這可能嗎?
編輯:基於卡爾Manaster的答案,我想出了一個擴展期望,允許上面的代碼工作;
expect.extend({
toFailTest(msg) {
let failed = false;
let actualMessage = "";
try
{
this.actual();
}
catch(ex)
{
actualMessage = ex.message;
failed = true;
}
expect.assert(failed, 'function should have failed exception');
if(msg) {
expect.assert(actualMessage === msg, `failed test: expected "${msg}" but was "${actualMessage}"`);
}
}
});
感謝卡爾 - 會放棄它!不知道它通過例外工作。 –
卡爾 - 謝謝你。這是我提出的解決方案的核心,現在編輯回我的問題。我所做的所有事情都是把它包裝起來,這樣你就可以編寫'expect(fn).toFailTest(expectedErrorMessage)' –