javascript - 如何使用 Promise 为函数编写单元测试
问题描述
我是 Node.JS 和 Mocha 的完整初学者,我的任务是为一个小组项目编写单元测试。我的问题是我什至不知道从哪里开始,因为返回值是一个承诺。看了很多指南,我学会了如何检查常用函数的返回值,但它对我的真实示例没有帮助。如果任何有经验的开发人员可以帮助我提供特定于我列出的功能的指南和代码示例,我可以破解并理解它并应用于其他功能。这是一个从 CSV 文件中获取统计信息的代码示例
function getStatistics() {
return new Promise((resolve, reject)=>{
try {
let readStatistics = [];
const statisticsReadStream = fs.createReadStream(statisticsFileName);
csv.fromStream(statisticsReadStream, {headers: true})
.transform(function (data) {
data.avgDuration = parseFloat(data.avgDuration);
data.avgPassed = parseFloat(data.avgPassed);
data.avgReachedPoints = parseFloat(data.avgReachedPoints);
data.minReachedPoints = parseInt(data.minReachedPoints);
data.maxReachedPoints = parseInt(data.maxReachedPoints);
return data;
})
.on("data", function (data) {
readStatistics.push(data);
})
.on("end", function () {
resolve(readStatistics);
statisticsReadStream.close();
});
}catch(err){
reject();
}
});
}
解决方案
在 mocha 中,您可以从 test 函数返回 promise 以指示 test ( it
) 已完成。
describe('My Test', function () {
it('should do something cool', function () {
return getStatistics().then(readStatistics => {
// Assert whatever you want here
});
});
});
从您的函数中抛出的任何错误getStatistics
或任何断言错误都将导致测试失败。
如果您特别想查看是否有错误发生,您也可以reject()
在测试中捕获错误 ()。
describe('My Test', function () {
it('should do something cool', function () {
return getStatistics().catch(error => {
// Assert whatever you want here about the error
});
});
});
推荐阅读
- google-apps-script - 如何使用应用程序脚本获取范围内所有单元格的背景颜色并将背景设置为相同大小的不同范围?
- shell - 删除 shell 脚本中的最后一个参数 (POSIX)
- c - 这个带有指向带有指针的结构的指针的c代码有什么问题?
- javascript - 如何使用 jquery 或普通 JS 从 div 中删除子元素
- facebook - 捕获 facebook 喜欢/不喜欢按钮点击事件
- matlab - 在 Matlab 上的每次迭代中存储错误的问题 - “无法识别的变量”
- android - 在 Xamarin Forms 中找不到“Master Detail Forms App”选项?
- python - 有没有办法让 isort 自动检测具有多个独立包的代码库中的第一方和第三方模块?
- python - 返回第一个非零值的列名
- python - 如何运行计算