gpt4 book ai didi

node.js - 如何在 serverless-mocha-plugin 中模拟单元测试功能

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:30 25 4
gpt4 key购买 nike

我正在使用 aws lambda 函数和 nodejs,我正在尝试测试以下函数。

module.exports.handler = (event, context, callback) => {

var host = environment.set_environment(env);

if (event.body[0].value) {
var cid= event.body[1].customerID;
var loginResponse = loginMethods.login(host,cid);

loginResponse.then(function (loginResult) {
if (loginResult.hash) {
console.log("login success");
var Response = requestMethod.callAPI(event.body, loginResult.hash);
Response .then(function (Result) {
console.log('successfulll');



}, function (error) {
console.log('failure response');

})
} else {
console.log("login response with no token");

}
}, function (error) {
console.log('login failure response');

})

} else {
callback(null, responseMethods.error('Invalid request'));
}

};

当我调用此函数进行单元测试时,我想模拟此函数内调用的其他函数

例如这一行

var loginResponse = loginMethods.login(host,cid);

在单元测试中,我不想调用真实函数,我只想调用模拟函数进行单元测试我来自 UI 背景,目的是实现同样的目标,即在 Angular 单元测试中模拟函数,我们可以在导入时轻松完成。

我有一种方法可以在nodejs中模拟函数

最佳答案

我找到了一种使用nodejs在aws的serverless-mocha-plugin中模拟函数的方法

可以使用sinonjs http://sinonjs.org/来完成

这是上述函数的示例为了模拟loginMethods

const loginPromise = new Promise(function (resolve, reject) {
const loginRes = {

"status": "success",
"hash": "U2_a5da71a9-4295-48e7-b427-843c17c8cae3",
"firstName": "Guest",
"lastName": "G",
};
resolve(loginRes);
});

var loginMock = sinon.mock(loginMethods);
loginMock.expects('login').withArgs(arg1, arg2).returns(loginPromise);

这样,在测试时,当调用该函数时,它只会调用模拟函数,而不是原始函数,并且响应也将是模拟响应

关于node.js - 如何在 serverless-mocha-plugin 中模拟单元测试功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50565402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com