首页 > 解决方案 > 我如何对刚刚返回的 else 语句进行单元测试。- Nodejs,诗乃

问题描述

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

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

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

我如何确保走这条路?

任务1.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;
        }
    });
}

标签: node.jsunit-testingsinon

解决方案


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

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


推荐阅读