カスタム同等性テスター
独自のカスタム同等性テスターを定義することで、2 つのオブジェクトが同等であるかどうかを Jasmine が判断する方法をカスタマイズできます。
カスタム同等性テスターは、2 つの引数を取る関数です。カスタム同等性テスターが 2 つの項目を比較する方法を把握している場合、 true
または false
を返す必要があります。それ以外の場合は、 undefined
を返して、Jasmine の同等性テスターにその項目を比較できないことを伝える必要があります。
function myCustomTester(first, second) {
if (typeof first === 'string' && typeof second === 'string') {
return first[0] === second[1];
}
}
次に、Jasmine が認識できるように beforeEach
にテスターを登録します。
beforeEach(function() {
jasmine.addCustomEqualityTester(myCustomTester);
});
これで、仕様で比較を行うと、カスタム同等性テスターが最初にチェックされ、その後既定の同等性テストにフォールバックします。カスタムテスターが false を返した場合、他の同等性チェックは実行されないことに注意してください。
it('is equal using a custom tester', function () {
expect('abc').toEqual(' a ');
});
it('is not equal using a custom tester', function () {
expect('abc').not.toEqual('abc');
});
it('works even in nested equality tests', function () {
expect(['abc', '123'].toEqual([' a ', ' 1 ']);
});