【问题标题】:How do i do unit test on else statement that just return. - Nodejs, Sinon我如何对刚刚返回的 else 语句进行单元测试。 - Nodejs,诗乃
【发布时间】:2018-11-07 01:36:04
【问题描述】:

我正在使用 sinon 在 nodejs 中进行单元测试。

如何测试我的 task1.js 的 else 部分?假设如果我的计数不为 0,我将继续我自己的处理,否则我结束我的任务。

我可以模拟我的 getbookForUpdateCount 以返回计数值,但接下来会发生什么?

我如何确保走这条路?

Task1.js:

function updateInfo() {

    bookDao.getbookForUpdateCount(updateCountParams, function (results) {

        console.log("Step 1: " + results[0].RECCOUNT + " for updates!".blue);
        //1. Get count. If > 0, proceed. else end task.
        if (results[0].RECCOUNT > 0) {

            ...
            //some other functions
        }
        else {
            //no record to be processed.
            return;
        }
    });
}

【问题讨论】:

  • 您需要进行两项测试,一项用于测试条件是否为真,另一项用于测试条件是否为真。我假设您正在使用sinon.stub().yields() 的某些变体?如果是这样,您只需要更改存根产生的内容。你能分享一下你目前的测试代码吗?

标签: node.js unit-testing sinon


【解决方案1】:

我通过以下方式理解您的问题:您要测试的功能将根据某些条件产生一些效果,或者只是“什么也不做”。现在,您要测试软件运行到“什么都不做”路径的情况。但是,您不确定如何在测试代码中验证该函数什么也没做。

验证是,简单地说。只是为了验证没有发生任何影响。例如,如果效果是对全局变量的修改,那么无效果是全局变量保持其值。如果效果是调用了某个对象上的方法,那么没有效果是没有调用相应的方法 - 模拟库提供了针对这种情况的检查,即检查某个函数是否 not 调用。如果效果是一些数据输入到数据库中,那么无效果是在数据库中找不到相应的数据(虽然这不是单元测试示例,而是集成测试示例) .

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2011-05-04
    • 2016-03-08
    • 2011-11-20
    • 2014-12-19
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    相关资源
    最近更新 更多