问题描述
我想为一个函数编写单元测试用例以确保它是否正常工作。所以我为那个特定的函数创建了存根,当我试图调用假那个存根时,这个函数实际上是被调用而不是假调用。以下是我的场景:
- 我有一个主函数,我在其中调用函数 saveData(**)。
- saveData(**) 函数正在调用 AWS SQS 将消息保存到数据库
以下是我的主要功能:
'use strict';
async function mainFunction() {
try {
await saveData(
name,age,);
return true;
} catch (e) {
console.log('Error - [%s]',e);
return null;
}
}
module.exports = { mainFunction };
下面是我的 saveData(**) 函数:
'use strict';
const AWS = require('aws-sdk');
const sqs = new AWS.SQS();
const saveData = async (
name,) => {
await sendMessage(JSON.stringify(dbData));
const params = {
DelaySeconds: <some_delay>,MessageAttributes: <messageAttributes>,MessageBody: {name:name,age:age},QueueUrl: <URL_FOR_QUEUE>,};
return sqs.sendMessage(params).promise();
return true;
};
module.exports = {
saveData,};
我的测试用例是,
'use strict';
const express = require('express');
const bodyParser = require('body-parser');
require('app-module-path').addPath('./src');
const sinon = require('sinon');
const app = express();
const sqsSender = require('lib/queue');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const main = require('../../../src/main-function');
const routes = require('routes');
routes.configure(app);
let mainFunctionStub;
let saveDataStub;
describe('/v1/main',() => {
beforeEach(() => {
mainFunctionStub = sinon.stub(main,'mainFunction');
saveDataStub = sinon.stub(sqsSender,'saveData');
});
describe('Test',() => {
it(`should return success`,(done) => {
const name = 'Name';
const age = 'Age';
saveDataStub.resolves({
name,});
});
});
afterEach(() => {
mainFunctionStub.restore();
mainFunctionStub.reset();
saveDataStub.restore();
saveDataStub.reset();
});
});
但是这个测试又回来了,
error: Jun-20-2021 20:07:05: Error - [Error [ConfigError]: Missing region in config
和,
Error: Timeout of 3500ms exceeded.
从这个错误我可以说这实际上是在调用 SQS 函数而不是伪造。我该如何解决这个问题,或者我如何伪造调用这个函数?我是这个单元测试的新手,所以任何帮助都会得到帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)