JasmineJS - Người đối sánh
Jasmine là một khung công tác thử nghiệm, do đó nó luôn nhằm mục đích so sánh kết quả của tệp hoặc hàm JavaScript với kết quả mong đợi. Matcher hoạt động tương tự trong khuôn khổ Jasmine.
Matcherslà hàm JavaScript thực hiện so sánh Boolean giữa đầu ra thực tế và đầu ra dự kiến. Có hai loại đối sánhInbuilt matcher và Custom matchers.
Inbuilt Matcher
Các bộ so khớp được tạo sẵn trong khuôn khổ Jasmine được gọi là inbuilt matcher. Người dùng có thể dễ dàng sử dụng nóimplicitly.
Ví dụ sau đây cho thấy cách hoạt động của Inbuilt Matcher trong khuôn khổ Jasmine. Chúng tôi đã sử dụng một số đối sánh trong chương trước.
describe("Adding single number ", function () {
//example of toEqual() matcher
it("should add numbers",function() {
expect(nested.add(5)).toEqual(5);
expect(nested.add(5)).toEqual(10);
});
it("should add numbers",function() {
expect(nested.addAny(1,2,3)).toEqual(6);
});
}
Trong ví dụ, toEqual () là trình so khớp có sẵn sẽ so sánh kết quả của add() và addAny() các phương thức với các đối số được chuyển đến toEqual() người phối ghép.
Người đối sánh tùy chỉnh
Các đối sánh không có trong thư viện hệ thống có sẵn của Jasmine được gọi là custom matcher. Trình so khớp tùy chỉnh cần được xác địnhexplicitly(). Trong ví dụ sau, chúng ta sẽ xem cách hoạt động của trình so khớp tùy chỉnh.
describe('This custom matcher example', function() {
beforeEach(function() {
// We should add custom matched in beforeEach() function.
jasmine.addMatchers ({
validateAge: function() {
Return {
compare: function(actual,expected) {
var result = {};
result.pass = (actual > = 13 && actual < = 19);
result.message = 'sorry u are not a teen ';
return result;
}
};
}
});
});
it('Lets see whether u are teen or not', function() {
var myAge = 14;
expect(myAge).validateAge();
});
it('Lets see whether u are teen or not ', function() {
var yourAge = 18;
expect(yourAge).validateAge();
});
});
Trong ví dụ trên, validateAge()hoạt động như một trình so khớp thực sự đang xác thực tuổi của bạn với một số phạm vi. Trong ví dụ này, validateAge () hoạt động như một trình đối sánh tùy chỉnh. Thêm tệp JS này vàoSpecRunner.htmlvà chạy như nhau. Nó sẽ tạo ra kết quả sau.