【发布时间】:2020-12-07 00:43:19
【问题描述】:
在使用我的 lambda/node 代码运行 Jest 测试时遇到问题。当我运行 index.js 时,Axios 工作正常。
这是我的 index.js
const sslRootCAs = require('ssl-root-cas/latest')
const util = require('util')
exports.handler = async function (event) {
const axios = require('axios');
//const user = process.env.user;
//const pw = process.env.pw;
const user = '';
const pw = '';
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
return axios.get('https://url', {
auth: {username: user, password: pw}, rejectUnauthorized: false
})
.then(res => {
return {
statusCode: 200,
body: res.data
};
})
.catch(err => {
return {
statusCode: 500,
body: JSON.stringify(err)
};
});
}
这是我的 index.test.js
const lambda = require("./index");
const axios = require("axios");
const mockAdapter = require("axios-mock-adapter");
// afterEach(() => {
// mockAxios.reset();
// });
it("test get - this will pass", async () => {
let mock = new mockAdapter(axios, {delayResponse: 1000});
mock.onGet().reply({
status: 200,
data: {
expand: 'schema,names',
startAt: 0,
maxResults: 50,
total: 2
}
});
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
var event = {Key: "12345"};
const result = await lambda.handler(event);
console.log(result);
expect(result).toMatchObject({ status: 200, body: "test" });
mock.reset();
});
我对 index.test.js 进行了多种尝试。我什至去掉了所有的嘲笑,并正在测试 get 是否可行。它不是。运行 npm test 时出现“无法验证第一个证书”。
当我执行节点 index.js 时,代码不会引发该错误。我怀疑 jest 有针对该错误或 Axios 的某种内置处理程序?
任何想法都会很棒。
谢谢, 蒂姆
【问题讨论】:
标签: node.js jestjs axios axios-mock-adapter