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');
});
は、私はそれが含むテストを失敗しない環境の中で、私の失敗テストコードを実行するかどうかはわかりません。これは可能ですか?
EDIT:Carl 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}"`);
}
}
});
おかげでカール - それは行きます!それが例外を介して機能していることを知らなかった。 –
Carl - これに感謝します。それは私が思いついた解決策の核で、今私の質問に編集されました。私がやったのは 'expect(fn).toFailTest(expectedErrorMessage)'と書くことができるようにまとめたものです。 –