javascript - 用Javascript重写单元测试可以吗?

标签 javascript unit-testing jasmine qunit

最近我开始对我正在开发的 JavaScript 应用程序进行单元测试。无论我使用 Jasmine、QUnit 还是其他,我总是编写一组测试。现在,我有了我的源代码,可以说:

function calc()
{
    // some code
    someOtherFunction();
    // more code
}

我还有一个测试(无论什么框架,使用 Jasmine spies 或 sinon.js 或其他东西),确认当 calc() 时调用 someOtherFunction()被执行。测试通过。现在,在某个时候,我重构了 calc 函数,因此 someOtherFunction() 调用不存在,例如:

function calc()
{
    // some code
    someVariable++;
    // more code
}

之前的测试将会失败,但是该函数仍然会按预期运行,只是它的代码不同。

现在,我不确定我是否正确理解测试是如何完成的。显然,我将不得不返回并重写测试,但如果发生这种情况,我的方法是否有问题?这是不好的做法吗?如果是的话,那我就错了。

最佳答案

一般规则是您不测试实现细节。因此,鉴于您决定删除该调用是可以的,该方法是一个实现细节,因此您不应该测试它是否被调用。

20/20 事后诸葛亮是一件很棒的事情,不是吗?

一般来说,我不会测试称为“私有(private)”方法的“公共(public)”方法。测试委托(delegate)应该保留在一个类调用另一个类时。

关于javascript - 用Javascript重写单元测试可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22182317/

相关文章:

javascript - 使用此语法的正确术语 <script src ="script.js"></script>

php - 使用 PHPUnit 模拟类时如何防止调用原始方法?

c++ - codelite unittest++/UnitTest++.h : no such file or directory

javascript - 有没有办法在 Jasmine 测试中整合 'spyOn' 设置?

javascript - 滑动 jQuery slider

javascript - 动态表单操作 URL

Javascript document.getElementsByClassName 不返回所有元素

javascript - sinon 模拟 withArgs 中具有未知值的对象 - sinon.match

testing - 有没有一种方法可以对 Jasmine 测试进行分类并管理排除项

javascript - 需要在 Protractor-Jasmine 中从 image.png 中获取文本