2

スペックを作成したい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 はクロージャーです...

4

0 に答える 0