我正在为我的AWS Lambda函数编写测试。 lambda函数被编写为async-await函数。
我为我的功能编写了以下摩卡测试用例。
const mainFile = require("../../src/main.js");
describe("creation", function () {
this.enableTimeouts(false)
let request = {};
let insertSpy = sinon.spy();
let mockStatsParms = mockStatsParams();
beforeEach(() => {
AWS.mock('DynamoDB.DocumentClient', 'put', insertSpy);
sinon.stub(services,"createparams").callsFake(mockStatsParams);
})
it("should return error for missing id", async function() {
request.headers = {};
let response = await mainFile.createEntry(request);
expect(insertSpy.calledOnce).to.be.true;
expect(insertSpy.calledWith(mockStatsParms)).to.be.true;
expect(response.statusCode).to.equal(401);
});
})
describe("makeResponse", function() {
let mockResponseObj = {};
beforeEach(function() {
mockResponseObj = createMockResponseObj();
})
it("Should return a valid response", function() {
expect(mainFile.makeResponse).to.be.a('function');
let response = mainFile.makeResponse("a","b","c")
expect(response.statusCode).to.equal(mockResponseObj.statusCode)
});
});
第一个describe方法包含对异步功能的测试,而第二个方法则针对正常功能的测试。
问题是摩卡咖啡在完成下面一行的执行后退出测试用例
let response = await mainFile.createEntry(request);
它不执行第二组测试用例。但是,如果我删除了await调用,那么mocha将返回一个promise并将执行第二个测试套件。
我可以解决返回的承诺并测试响应(不使用等待)。但是使用await有什么问题吗?我希望摩卡咖啡在那条线上等待,得到结果,然后继续执行,执行剩余的测试用例。