Agak aneh ini bukan fungsi dasar
Anda dapat menambahkan pencocokan khusus seperti ini:
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
};
}
};
}
);
};
Akibatnya Anda mendefinisikan konstruktor untuk matcher Anda - itu adalah fungsi yang mengembalikan objek matcher.
Sertakan itu sebelum Anda 'boot'. Pencocok dasar dimuat pada saat boot.
File html Anda akan terlihat seperti ini:
<!-- 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>
Kemudian di boot.js Anda menambahkan panggilan untuk menambahkan matcher setelah jasmine telah ditentukan tetapi sebelum jasmine.getEnv (). Get env sebenarnya adalah panggilan penyiapan (dengan nama yang agak menyesatkan).
Matcher mendapatkan penyiapan dalam panggilan ke setupCoreMatchers di konstruktor Env.
/**
* ## 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();
Mereka menunjukkan cara lain untuk menambahkan pencocokan khusus dalam pengujian sampel, namun cara kerjanya adalah dengan membuat ulang pencocokan sebelum setiap pengujian menggunakan beforeEach
. Kelihatannya sangat mengerikan jadi saya pikir saya akan menggunakan pendekatan ini sebagai gantinya.