为什么我永远不会问"如何用茉莉花和#34;来为这个功能写一个测试?

时间:2015-12-20 10:34:13

标签: jasmine jasmine-jquery jasmine-node

我经常阅读这类问题:

  

如何使用jasmine测试以下功能?

正在搜索该答案的人已经搜索了茉莉花测试的例子,并没有找到可以帮助他或她的东西。

但这个问题没有好的答案。您可以通过发布测试来做出正确的答案,该测试让功能失败或不失败,但答案并不好。为什么?因为这是完全错误的问题。

那么我为什么不要问"如何使用茉莉花和#34;来编写该功能的测试? ?

1 个答案:

答案 0 :(得分:1)

为什么你永远不应该问:如何用茉莉花来测试这个功能?

在jasmines github page上,第一句话是:

  

Jasmine是一个针对JavaScript的行为驱动开发测试框架。

那么什么是行为驱动开发?该主题的答案为Wikipedia

BDD的原则是:

  • 首先为单位定义测试集;
  • 然后实施该单位;
  • 最后验证单元的实现是否使测试成功。

因此,如果我使用茉莉花,我会致力于BDD流程。在这意味着第一手,我正在思考,我的程序应该做什么以及我如何构建它。 BDD与单元测试过程的功能首先是不同的,你需要考虑完全不同的程序。

一开始我也犯了错误,首先考虑我的班级及其方法。但是一旦你知道如何构建你的程序,它通过测试,你就不会再想回去了。因为结果也完全不同。当您的代码易于测试时,您将拥有许多小功能。每个功能都只做非常简单的事情。那些小功能也很容易测试。您会惊讶地发现expect(myFunction()).toEqual("my result")足以测试您的代码的频率。

所以你永远不应该问:如何用茉莉花来测试给定的函数?因为茉莉花的意图不是测试已有的功能。当您首先编写测试时,将测试所有功能。

允许的是询问如何使用茉莉花来测试行为。