Jasmine - 如何测试测试期间未被实际功能返回的值?

时间:2017-03-18 12:35:23

标签: javascript jasmine

如何在测试中测试值/返回值以便在我的实际函数中返回测试?

    function testing(one,two,three){
      var result;
      var add=one+two;
      var subtr=three-two;
      result=one+add+subtr;
      return result;
    }
    testing(5,10,4)

如果我想测试结果,我会这样做:

            describe("calculate numbers", function() {
              it("result should add all three arguments", function() {
                var final = testing(5,10,4);
                expect(final).toEqual(14);
              });
            })

但是如何测试我的功能中没有返回的内容?我如何测试例如'add'或'subtle',所以对于add来说它应该返回15.我可以在测试期间返回其他值,我在实际函数中没有返回吗?

1 个答案:

答案 0 :(得分:0)

当您发现难以进行单元测试时,无论编程语言如何,都表明代码体系结构中存在可能的气味。首先编写测试,然后只编写代码,如果你想拥有易于测试的代码,又称TDD。

一方面,简单的解决方案是将您的功能分成几个较小的功能并分别进行测试。这样您就不会违反单一责任原则(SRP)。

然而另一方面,如果函数中的逻辑是微不足道的,而你只关心最终结果,那么只测试最终结果,即测试代码应该返回的内容而不是它应该如何返回它。

在现实生活中,我倾向于将功能分解为较小的功能并将其包装在数据服务中,并对数据服务进行单元测试。