node.js - 使用 sinon stub promise 和 axios 进行单元测试
问题描述
我正在尝试使用 sinon 测试我的节点 js api。我有一个 返回 appDetails的函数appRequest() ;但我无法得到结果。我正在使用 proxyquire 来获得结果,但它不起作用。
appService.js
function appRequest(apprequestData) {
return new Promise(function (resolve, reject) {
console.log(apprequestData);
axios.get(url + apprequestData.dataId).then(appResult => {
console.log('appResult'+appResult);
if ('' == appResult.data.result || appResult.data.result[0].dataId!= apprequestData.dataId) {
reject({
status: 404,
message: "APP not Found"
});
return;
}
resolve({
clientId: appResult.data.result[0].dataId
});
}).catch(error => {
console.log(error);
if (null == error.response || error.response.status == 404) {
reject({ status: 404, message: "APP service down", referenceNumber: apprequestData.referenceNumber });
return;
}
reject({ status: 404, message: "APP service down", referenceNumber: apprequestData.referenceNumber });
return;
});
});
}
app.test.js
describe("应用请求", function() {
describe('get app details', () =>{
var appDetails, teststub;
let req = {
"dataId": "1234"
}
let response={ "dd":23}
// teststub = sinon.stub(axios,'get').resolves(Promise.resolve(response));
teststub = sinon.stub();
it('should return app ', function() {
appDetails = proxyquire('../app/service/appService', { 'axios': teststub.returns(response)})
console.log(appDetails);
var result=appDetails.appRequest(req);
console.log("***"+JSON.stringify(result)); // this is coming as empty
expect(result.statusCode).equal(200);
});
});
});
解决方案
推荐阅读
- typescript - 为什么打字稿函数参数类型推断失败?
- guptateamdeveloper - 使用 Gupta.Sql.Base.dll 和一些与连接相关的问题 SQLBase901 设置我的连接时出现查询错误
- flutter - 重叠两个按钮 Flutter
- crystal-reports - 无法在第三方软件的内置 Crystal Report Viewer 中显示动态参数
- arrays - 使用 VBA 将数组粘贴到 Excel 中的空白表时遇到问题
- python - Pandas sort_values,排序列中的重复值
- flutter - 如何使用颤振获取所有键:值保存在共享首选项中?
- aframe - 有没有办法在移动设备上查看 A-Frame 检查器?
- string - 带我了解字符串重叠算法
- flutter - flutter : 如何翻转这个路径剪辑 Bezier