ค่อนข้างแปลกนี่ไม่ใช่ฟังก์ชันพื้นฐาน
คุณสามารถเพิ่มตัวจับคู่แบบกำหนดเองได้ดังนี้:
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.getEnv () Get env คือการเรียกตั้งค่า (ชื่อที่ทำให้เข้าใจผิดเล็กน้อย)
ผู้จับคู่ได้รับการตั้งค่าในการเรียกใช้ setupCoreMatchers ในตัวสร้าง Env
window.jasmine = jasmineRequire.core(jasmineRequire);
yourGlobal.addExtraMatchers();
jasmineRequire.html(jasmine);
var env = jasmine.getEnv();
พวกเขาแสดงอีกวิธีหนึ่งในการเพิ่มตัวจับคู่แบบกำหนดเองในการทดสอบตัวอย่างอย่างไรก็ตามวิธีการทำงานคือการสร้างตัวจับคู่ใหม่ก่อนการทดสอบทุกครั้งโดยใช้ไฟล์beforeEach
. มันดูแย่มากดังนั้นฉันคิดว่าฉันจะใช้วิธีนี้แทน