为什么我不应该问 "How to write a test for that function with jasmine"?

Why should I never ask "How to write a test for that function with jasmine"?

我经常看到这样的问题:

How can I test following function with jasmine?

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

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

那我为什么不问 "How to write a test for that function with jasmine" ?

为什么你不应该问:如何用 jasmine 测试那个函数?

茉莉花上github page第一句是:

Jasmine is a Behavior Driven Development testing framework for JavaScript.

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

BDD 的原则是:

  • 先为单元定义一个测试集;
  • 然后执行单元;
  • 最终验证单元的实现使测试成功。

所以如果我使用 jasmine,我会致力于 BDD 过程。这意味着我首先要考虑的是,我的程序应该做什么以及我想如何构建它。 BDD 与先是功能再是单元测试过程如此不同,以至于您需要完全不同地思考如何编程。

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

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

允许的事情是询问如何用 jasmine 测试行为...。