JasmineJS-테스트의 빌딩 블록
이 장에서는 Jasmine의 테스트 구성 요소에 대해 설명합니다.
스위트 블록
Jasmine은 JavaScript 용 테스트 프레임 워크입니다. SuiteJasmine 프레임 워크의 기본 구성 요소입니다. 특정 파일 또는 함수에 대해 작성된 유사한 유형의 테스트 케이스 모음을 하나의 스위트라고합니다. 그것은 두 개의 다른 블록을 포함합니다.“Describe()” 그리고 또 하나는 “It()”.
하나의 Suite 블록에는 두 개의 매개 변수 만있을 수 있습니다. “name of that suite” 그리고 또 다른 “Function declaration” 실제로 테스트 할 유닛 기능을 호출합니다.
다음 예에서는 단위 테스트 기능을 추가 할 스위트를 생성합니다. add.js파일. 이 예에서는 JS 파일 이름이“calculator.js” Jasmine을 통해 테스트되며 해당 Jasmine 사양 파일은 “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);
});
});
위의 함수에서 우리는 두 가지 함수를 선언했습니다. 함수add 해당 함수와 다른 함수에 인수로 주어진 두 개의 숫자를 추가합니다. addAny 인수로 주어진 숫자를 추가해야합니다.
이 파일을 만든 후이 파일을 “SpecRunner.html”헤드 섹션 내부. 컴파일이 성공하면 결과적으로 다음과 같은 출력이 생성됩니다.
중첩 스위트 블록
Suite 블록은 다른 Suite 블록 내에 많은 Suite 블록을 가질 수 있습니다. 다음 예제는 다른 스위트 블록 안에 다른 스위트 블록을 생성하는 방법을 보여줍니다. 다음과 같은 두 개의 JavaScript 파일을 만듭니다.“NestedSpec.js” 다른 이름은 “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;
}
};
위의 코드는 실행 결과 다음과 같은 출력을 생성합니다. specRunner.html head 섹션 안에이 파일을 추가 한 후 파일.
블록 설명
앞에서 설명한대로 블록 설명은 Suite 블록의 일부입니다. Suite 블록과 마찬가지로 두 개의 매개 변수를 포함합니다.“the name of the describe block” 그리고 또 다른 “function declaration”. 다음 예제에서는 Jasmine Suite 블록의 작업 흐름을 이해하기 위해 많은 설명 블록을 살펴볼 것입니다. 다음은 완전한 설명 블록의 예입니다.
describe("Adding single number ",function () {
it("should add numbers",function() {
expect(nested.add(5)).toEqual(5);
expect(nested.add(5)).toEqual(10);
});
}
IT 블록
설명 블록과 마찬가지로 우리는 IT 블록도 소개했습니다. 설명 블록 안에 들어갑니다. 이것은 실제로 각 단위 테스트 케이스를 포함하는 블록입니다. 다음 코드에는IT 하나 안에 블록 describe 블록.
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);
});
}
블록 기대
재스민 속 Expect필요한 함수 또는 JavaScript 파일에서 기대치를 작성할 수 있습니다. 아래로 온다IT블록. 하나의 IT 블록에는 둘 이상의 Expect 블록이있을 수 있습니다.
다음은 Expect 블록의 예입니다. 이 expect 블록은 JavaScript 함수 또는 JavaScript 파일을 단위 테스트하는 다양한 방법을 제공합니다. 각 Expect 블록은matcher. 매처에는 두 가지 유형이 있습니다.inbuilt matcher 그리고 또 다른 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);
});
}
다음 장에서는 Expect 블록의 다양한 내장 메서드의 다양한 사용에 대해 논의 할 것입니다.