[英]Unit Testing: Jasmine
isTriangle
函數檢查三角形的邊並確定三角形是不等邊形、等邊形還是等腰三角形。
編寫函數后,我需要使用 Javascript 通過 Jasmine 進行單元測試。
代碼:
function isTriangleTranslate(side1, side2, side3) {
if (side1 === side2 && side3 === side2 && side2 === side1) {
return ("It's an equilateral!");
}
if (side2 === side3 && side1 != side2 && side1 != side3 || side1 === side3 && side2 != side1 && side2 != side3 || side1 === side2 && side2 != side3) {
return ("It's an isosceles!");
}
else {
return ("It's a scalene!");
}
}
規格:
describe("isTriangle", function(){
it("is an equilateral trinagle with three equal sides", function(){
expect(isTriangleTranslate()).toEqual("It's an equilateral!");
})
});
describe("isTriangle", function(){
it("is an isosceles triangle with two equal sides", function(){
expect(isTriangleTranslate()).toEqual("It's an isosceles!");
})
});
describe("isTriangle", function(){
it("is a scalene triangle with no equal sides", function(){
expect(isTriangleTranslate()).toEqual("It's a scalene!");
})
});
錯誤是不等邊線和等腰線不等於“這是等邊線”
我不希望它這樣做。 我希望它確定我的 side1、side2 和 side3 是否相等,然后它等於字符串“It's an equilateral!”
如果我的 side1、side2 和 side3 有兩個相等的邊,它等於字符串“It's an isosceles!”
否則,三角形是“這是不等邊的!”
你將如何在 Jasmine 的單元測試中編寫這個?
首先,我會根據一般原則簡化功能:
function isTriangleTranslate(a, b, c) {
if (a === b && b === c && c === a) {
return ("It's an equilateral!")
}
else if (a+b == a+c || b+a == b+c || c+a == c+b) {
return ("It's an isosceles!");
} else {
return ("It's a scalene!");
}
}
然后,我會將值傳遞給測試。 您只是在沒有參數的情況下調用該方法。
describe("isTriangle", function(){
it("is an equilateral triangle with three equal sides", function(){
expect(isTriangleTranslate(4,4,4)).toEqual("It's an equilateral!");
})
});
describe("isTriangle", function(){
it("is an isosceles triangle with two equal sides", function(){
expect(isTriangleTranslate(4,4,5)).toEqual("It's an isosceles!");
})
});
describe("isTriangle", function(){
it("is a scalene triangle with no equal sides", function(){
expect(isTriangleTranslate(4,5,6)).toEqual("It's a scalene!");
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.