これは基本的な機能ではありません。
次のようなカスタムマッチャーを追加できます。
JasmineExtensions.js
yourGlobal.addExtraMatchers = function () {
var addMatcher = function (name, func) {
func.name = name;
jasmine.matchers[name] = func;
};
addMatcher("toBeGreaterThanOrEqualTo", function () {
return {
compare: function (actual, expected) {
return {
pass: actual >= expected
};
}
};
}
);
};
実際には、マッチャーのコンストラクターを定義しています。これはマッチャーオブジェクトを返す関数です。
「ブート」する前にそれを含めてください。基本的なマッチャーはブート時にロードされます。
htmlファイルは次のようになります。
<!-- jasmine test framework-->
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
<!-- custom matchers -->
<script type="text/javascript" src="Tests/JasmineExtensions.js"></script>
<!-- initialisation-->
<script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>
次に、boot.jsに呼び出しを追加して、jasmineが定義された後、jasmine.getEnv()の前にマッチャーを追加します。Get envは実際には(少し誤解を招くような名前の)セットアップ呼び出しです。
マッチャーは、EnvコンストラクターのsetupCoreMatchersの呼び出しでセットアップを取得します。
/**
* ## Require & Instantiate
*
* Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference.
*/
window.jasmine = jasmineRequire.core(jasmineRequire);
yourGlobal.addExtraMatchers();
/**
* Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference.
*/
jasmineRequire.html(jasmine);
/**
* Create the Jasmine environment. This is used to run all specs in a project.
*/
var env = jasmine.getEnv();
サンプルテストにカスタムマッチャーを追加する別の方法を示していますが、機能する方法は、を使用するすべてのテストの前にマッチャーを再作成することbeforeEach
です。それはかなり恐ろしいようですので、代わりにこのアプローチで行くと思いました。