使用我的 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?
任何想法都会很棒。
谢谢,蒂姆