【发布时间】:2018-08-27 05:25:46
【问题描述】:
考虑以下函数(为便于阅读而简化、缩短):
function testMe(a)
{
var request = require('request');
return new Promise((resolve, reject)=>{
request.get('someexternalulr?a='+a, (error, response, body) => {
if (error === null)
{
switch(body)
{
case 'one thing':
resolve(true);
break;
case 'something else':
reject(whatever);
break;
// more logic
}
}
else
{
reject(error);
}
});
});
}
它调用一个外部 API,应用一些逻辑来分析响应,并返回一个 Promise。 如果我编写一个 jasmine 测试,API 会被每个(有点)好的测试调用。然而,我有兴趣测试我自己的逻辑,而不是外部 API。
测试此类功能的最佳实践是什么?
a) 将对请求模块的依赖作为函数的第二个参数传递?
b) 将请求移动到全局变量?
c) 还有什么诡计?
【问题讨论】:
-
在写这篇文章时,我意识到我的问题有两个部分。一是如何mock外部依赖,二是如何mock API响应。
标签: node.js unit-testing dependency-injection jasmine