Hơi kỳ lạ đây không phải là chức năng cơ bản
Bạn có thể thêm một đối sánh tùy chỉnh như sau:
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
};
}
};
}
);
};
Trên thực tế, bạn đang xác định một phương thức khởi tạo cho trình so khớp của mình - đó là một hàm trả về một đối tượng so khớp.
Bao gồm điều đó trước khi bạn 'khởi động'. Các trình kết hợp cơ bản được tải tại thời điểm khởi động.
Tệp html của bạn sẽ trông như thế này:
<!-- 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>
Sau đó, trong boot.js của bạn, hãy thêm lệnh gọi để thêm các đối sánh sau khi jasmine đã được xác định nhưng trước jasmine.getEnv (). Get env thực sự là một cuộc gọi thiết lập (được đặt tên hơi nhầm lẫn).
Các so khớp được thiết lập trong lệnh gọi setupCoreMatchers trong phương thức khởi tạo 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();
Họ chỉ ra một cách khác để thêm các trình so khớp tùy chỉnh trong các thử nghiệm mẫu, tuy nhiên, cách thức hoạt động là tạo lại (các) trình so khớp trước mỗi thử nghiệm bằng cách sử dụng a beforeEach
. Điều đó có vẻ khá kinh khủng vì vậy tôi nghĩ thay vào đó tôi sẽ đi theo cách tiếp cận này.