スペックを作成したいJasmine 2.x用のカスタムマッチャーをいくつか作成しました。ほとんどのプログラマーは、マッチャーをテストに適用して、アウトコードがポジティブかどうかを検証するだけでマッチャーをテストします。
たとえば、.toEqual
「カスタム」マッチャー:
it('should test if two objects are equal', function () {
expect({}).toEqual({}); // Passing
});
ただし、失敗した場合についてもマッチャーをテストしたいと思います。たとえば、この方法で、マッチャーが失敗したときに生成されるメッセージをテストしたいと考えています。
// Jasmine 2.x
it('should test if two objects are equal', function () {
expect(matcher.compare(1, 1)).toEqual({
pass: true,
message: 'Expected 1 not to equal 1' // Message is for when you use .not with the matcher
});
expect(matcher.compare(1, 2)).toEqual({
pass: false,
message: 'Expected 1 to equal 2'
});
});
コード例の変数matcher
は、 を使用して追加したマッチャー関数ですjasmine.addMatchers({ toEqual: matcher })
。
グローバル空間を汚染したくないので、スペックでマッチャーを利用できるようにする方法がわかりません。デフォルトの jasmine マッチャーが含まれており、いくつかのオブジェクトを介して仕様jasmine.matchers
に追加されます。$j
したがって、実際の主な質問は次のとおりです。Jasmine に追加したカスタムマッチャーはどこに保存されますか? 仕様のためにそれらを取得できますか、それともクロージャーに隠されていますか?
編集
addMatchers
を呼び出しているようでenv.addMatchers
、マッチャーを にプッシュしrunnableResources[currentRunnable().id].customMatchers
ます。RunnableResources はクロージャーです...