我已经有一段时间使用无服务器了,但这是我第一次尝试使用mocha编写测试。当我尝试运行以下sls create test --function insiders/create.create
时,出现以下错误Cannot read property 'handler' of undefined
。这就是我创建的处理程序的serverless.yml的样子
createInsider:
handler: insiders/create.create
events:
- http:
path: insiders
method: post
cors: true
这就是插件Mocha的定义方式
plugins:
- serverless-mocha-plugin
代码已部署并且可以正常工作。命名空间是因为insiders/create.js
是我定义函数的地方。
module.exports.create = () => {}
我还尝试了以下方法
sls create test --function insiders/create
sls create test --function create
答案 0 :(得分:0)
不确定是否能回答您的问题,但是由于无服务器代码的大部分业务逻辑只是常规的javascript,因此您可以直接使用mocha进行单元测试。
npm install --save-dev mocha
在package.json中
"test": "mocha test/**/*test.js",
创建一个测试文件夹及其下的相应测试文件 例如:对于src / insiders / create.js创建test / insiders / create.test.js
对于每个处理程序,请测试不同输入的输出
用于回调样式
describe('create', () => {
it('should execute', (done) => {
const event = {};
const context = {};
const callback = (_, response) => {
//assert required things
done();
};
const handler = require('../../src/insiders/create.js');
handler(event, context, callback)
});
});
对于异步等待样式
describe('create', () => {
it('should execute', async () => {
const event = {};
const handler = require('../../src/insiders/create.js');
const result = await handler(event);
//assert the result
});
});
我们使用这种样式,对我们来说效果很好。
编辑:修复了mocha glob模式,以递归方式搜索所有测试文件。