node.js - 我如何对刚刚返回的 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;
}
});
}
解决方案
我通过以下方式理解您的问题:您要测试的功能将根据某些条件产生一些影响,或者只是“什么也不做”。现在,您要测试软件运行到“什么都不做”路径的情况。但是,您不确定如何在测试代码中验证该函数什么也没做。
验证是,简单地说。只是为了验证没有发生任何影响。例如,如果效果是对全局变量的修改,那么无效果是全局变量保持其值。如果效果是调用了某个对象上的方法,那么没有效果是没有调用相应的方法 - 模拟库提供了针对这种情况的检查,即检查某个函数是否没有被调用。如果效果是一些数据输入到数据库中,那么无效果是在数据库中找不到相应的数据(虽然这不是单元测试示例,而是集成测试示例) .
推荐阅读
- vagrant - Vagrant 输出大量 Ruby 警告
- python - 如何在python中制作可保存的ui
- python - 尝试在 python 提示符下运行简单脚本但出现错误
- bash - sh: 无法创建 /dev/null/: 不是目录
- c# - Winforms最大化在辅助显示器上不正确
- sql-server - 如何为 ssrs 中的所有列获取单行的 $ 值?
- scala - 如何在 IntelliJ 中使用 sbt 正确启动 Scala 项目?
- microservices - 如何找出为什么以及哪个微服务慢?
- laravel - 如何在laravel中加入表格
- formula - 如何更改 libreoffice calc 公式的语言?