【发布时间】:2014-03-04 20:28:35
【问题描述】:
最近我开始对我正在开发的 JavaScript 应用程序进行单元测试。无论我使用 Jasmine、QUnit 还是其他,我总是编写一组测试。现在,我有我的源代码,可以说:
function calc()
{
// some code
someOtherFunction();
// more code
}
我还有一个测试(无论是什么框架,使用 Jasmine 间谍或 sinon.js 或其他东西),确认在执行 calc() 时调用了 someOtherFunction()。测试通过。现在在某个时候我重构了 calc 函数,所以 someOtherFunction() 调用不存在,例如:
function calc()
{
// some code
someVariable++;
// more code
}
之前的测试会失败,但是函数仍然会按预期运行,只是它的代码不同。
现在,我不确定我是否正确理解了测试是如何进行的。很明显,我将不得不回去重写测试,但如果发生这种情况,我的方法有问题吗?这是不好的做法吗?如果是这样,那我错了。
【问题讨论】:
-
如果你的函数的行为仍然正确,那么你的测试是错误的。但是您的测试显然测试了
someOtherFunction是否被调用。它不是。因此,您对构建测试的good behavior的定义似乎存在缺陷。
标签: javascript unit-testing jasmine qunit