简体   繁体   English

三角形JavaScript问题/单元测试不起作用(茉莉花)

[英]Triangle javascript problem/ Unit testing not working (Jasmine)

I written code to determine if a triangle is equilateral, isosceles, or scalene. 我编写了代码来确定三角形是等边的,等腰的还是斜角的。 Next, I'm suppose to test it using Jasmine but my code keep failing. 接下来,我想使用Jasmine对其进行测试,但是我的代码仍然失败。 I am very new to unit testing. 我是单元测试的新手。 Please help me! 请帮我!

TriangleSpec: TriangleSpec:

describe('Determine if a triangle is equilateral, isolene, scalene', 
function () {
  it('equilateral triangles have equal sides', function () {
    var triangle = new isTriangle (5, 5, 5)
    expect(triangle).toEqual("Equilateral");
  });

Triangle.js: Triangle.js:

function isTriangle(side1, side2, side3){
  if (side1 === 0 || side2 === 0 || side3 === 0) {
      console.log("Error");
  } else if (side1 < 0 || side2 < 0 || side3 < 0) {
      console.log("Error");
  } else if (side1 + side2 <= side3 || side1 + side3 <= side2 || side2 +
    side3 <= side1) {
    console.log("Error");
  }
  else if (side1 == side2 && side2 == side3) {
    console.log("Equilateral");
  } else if (side1 === side2 || side2 === side3 || side1 === side3) {
    console.log("Isosceles");
  } else {
    console.log("Scalene");
  }
};

isTriangle(6, 6, 5);

There are two issues: 有两个问题:

  • Your isTriangle function is not returning the result; 您的isTriangle函数不返回结果; it merely outputs it with console.log , but that does not count as the return value of a function. 它仅使用console.log输出它,但是不算作函数的返回值。 So replace all your console.log("some result") to return "some result" 因此,替换所有的console.log("some result")return "some result"

  • The function is not a constructor, so it should not be called with new . 该函数不是构造函数,因此不应使用new调用它。 In your test code just do: var triangle = isTriangle (5, 5, 5) 在您的测试代码中,只需执行: var triangle = isTriangle (5, 5, 5)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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