JasmineJS - Xây dựng các khối thử nghiệm
Trong chương này, chúng ta sẽ thảo luận về các khối xây dựng của bài kiểm tra của Jasmine.
Khối Suite
Jasmine là một khung thử nghiệm cho JavaScript. Suitelà khối xây dựng cơ bản của khuôn khổ Jasmine. Tập hợp các trường hợp kiểm thử loại tương tự được viết cho một tệp hoặc chức năng cụ thể được gọi là một bộ. Nó chứa hai khối khác, một khối là“Describe()” và một cái khác là “It()”.
Một khối Suite chỉ có thể có hai tham số, một “name of that suite” và khác “Function declaration” thực sự gọi đến chức năng đơn vị của chúng tôi sẽ được kiểm tra.
Trong ví dụ sau, chúng tôi sẽ tạo một bộ sẽ kiểm tra đơn vị chức năng thêm trong add.jstập tin. Trong ví dụ này, chúng tôi có tệp JS có tên“calculator.js” sẽ được kiểm tra thông qua Jasmine và tệp thông số Jasmine tương ứng là “CalCulatorSpec.js”.
Calculator.js
window.Calculator = {
currentVal:0,
varAfterEachExmaple:0,
add:function (num1) {
this.currentVal += num1;
return this.currentVal;
},
addAny:function () {
var sum = this.currentVal;
for(var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
this.currentVal = sum;
Return this.currentVal;
},
};
CalCulatorSpec.js
describe("calculator",function() {
//test case: 1
it("Should retain the current value of all time", function () {
expect(Calculator.currentVal).toBeDefined();
expect(Calculator.currentVal).toEqual(0);
});
//test case: 2
it("should add numbers",function() {
expect(Calculator.add(5)).toEqual(5);
expect(Calculator.add(5)).toEqual(10);
});
//test case :3
it("Should add any number of numbers",function () {
expect(Calculator.addAny(1,2,3)).toEqual(6);
});
});
Trong hàm trên, chúng ta đã khai báo hai hàm. Chức năngadd sẽ thêm hai số đã cho làm đối số cho hàm đó và một hàm khác addAny nên thêm bất kỳ số nào đã cho làm đối số.
Sau khi tạo tệp này, chúng ta cần thêm tệp này vào “SpecRunner.html”bên trong phần đầu. Khi biên dịch thành công, kết quả này sẽ tạo ra kết quả sau.
Khối Suite lồng nhau
Khối suite có thể có nhiều khối suite bên trong khối suite khác. Ví dụ sau sẽ cho bạn thấy cách chúng tôi có thể tạo một khối bộ khác bên trong một khối bộ khác. Chúng tôi sẽ tạo hai tệp JavaScript, một tệp có tên là“NestedSpec.js” và một người khác có tên là “nested.js”.
NestedSpec.js
describe("nested",function() {
// Starting of first suite block
// First block
describe("Retaining values ",function () {
//test case:1
it ("Should retain the current value of all time", function () {
expect(nested.currentVal).toBeDefined();
expect(nested.currentVal).toEqual(0);
});
}); //end of the suite block
//second suite block
describe("Adding single number ",function () {
//test case:2
it("should add numbers",function() {
expect(nested.add(5)).toEqual(5);
expect(nested.add(5)).toEqual(10);
});
}); //end of the suite block
//third suite block
describe("Adding Different Numbers",function () {
//test case:3
it("Should add any number of numbers",function() {
expect(nested.addAny(1,2,3)).toEqual(6);
});
}); //end of the suite block
});
Nested.js
window.nested = {
currentVal: 0,
add:function (num1) {
this.currentVal += num1;
return this.currentVal;
},
addAny:function () {
Var sum = this.currentVal;
for(var i = 0;i < arguments.length; i++) {
sum += arguments[i];
}
this.currentVal = sum;
return this.currentVal;
}
};
Đoạn mã trên sẽ tạo ra kết quả sau khi chạy specRunner.html tệp sau khi thêm tệp này vào bên trong phần đầu.
Mô tả khối
Như đã thảo luận trước đó, khối mô tả là một phần của khối Suite. Giống như khối Suite, nó chứa hai tham số, một“the name of the describe block” và khác “function declaration”. Trong các ví dụ sắp tới của chúng tôi, chúng tôi sẽ đi qua nhiều khối mô tả để hiểu quy trình hoạt động của khối bộ Jasmine. Sau đây là một ví dụ về một khối mô tả hoàn chỉnh.
describe("Adding single number ",function () {
it("should add numbers",function() {
expect(nested.add(5)).toEqual(5);
expect(nested.add(5)).toEqual(10);
});
}
Khối CNTT
Giống như khối mô tả, chúng tôi cũng đã được giới thiệu về khối CNTT. Nó đi trong một khối mô tả. Đây là khối thực sự chứa mỗi trường hợp thử nghiệm đơn vị. Trong đoạn mã sau, có những phầnIT khối bên trong một describe khối.
describe("Adding single number ",function () {
// test case : 1
it("should add numbers",function() {
expect(nested.add(5)).toEqual(5);
expect(nested.add(5)).toEqual(10);
});
//test case : 2
it("should add numbers",function() {
expect(nested.addAny(1,2,3)).toEqual(6);
});
}
Khối kỳ vọng
Hoa nhài Expectcho phép bạn viết kỳ vọng của mình từ hàm cần thiết hoặc tệp JavaScript. Nó đi dướiITkhối. Một khối CNTT có thể có nhiều hơn một khối Expect.
Sau đây là một ví dụ về khối Expect. Khối mong đợi này cung cấp nhiều phương pháp để kiểm tra đơn vị hàm JavaScript hoặc tệp JavaScript của bạn. Mỗi khối Kỳ vọng còn được gọi làmatcher. Có hai loại so khớp khác nhau, mộtinbuilt matcher và khác user defined matchers.
describe("Adding single number ",function () {
// test case : 1
it("should add numbers",function() {
expect(nested.add(5)).toEqual(5);
expect(nested.add(5)).toEqual(10);
});
//test case : 2
it("should add numbers",function() {
expect(nested.addAny(1,2,3)).toEqual(6);
});
}
Trong các chương sắp tới, chúng ta sẽ thảo luận về các cách sử dụng khác nhau của các phương thức sẵn có khác nhau của khối Expect.