简体   繁体   English

单元测试:茉莉花

[英]Unit Testing: Jasmine

isTriangle function checks the sides of the triangle and determines if the triangle is either a scalene, equilateral, or isosceles. isTriangle函数检查三角形的边并确定三角形是不等边形、等边形还是等腰三角形。

After writing the function, I need to do an unit test via Jasmine with Javascript.编写函数后,我需要使用 Javascript 通过 Jasmine 进行单元测试。

Code:代码:

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!");
    }
}

Spec:规格:

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!");

  })

});

Errors are that the scalene & isosceles do not equal "It's an equilateral"错误是不等边线和等腰线不等于“这是等边线”

I do not want it to do that.我不希望它这样做。 I want it to determine if my side1, side2, & side3 are equal then it equals the string "It's an equilateral!"我希望它确定我的 side1、side2 和 side3 是否相等,然后它等于字符串“It's an equilateral!”

If my side1, side2, & side3 have two sides that are equal the it equals the string "It's an isosceles!"如果我的 side1、side2 和 side3 有两个相等的边,它等于字符串“It's an isosceles!”

Else, the triangle is "It's a scalene!"否则,三角形是“这是不等边的!”

How will you write this in a unit test for Jasmine?你将如何在 Jasmine 的单元测试中编写这个?

First, I would simplify the function, just on general principles:首先,我会根据一般原则简化功能:

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!");
   }
}

Then, I would pass values into the test.然后,我会将值传递给测试。 You were just invoking the method with no arguments.您只是在没有参数的情况下调用该方法。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM