使用Mocha插件测试无服务器

时间:2019-01-02 02:07:08

标签: testing mocha serverless-framework

我已经有一段时间使用无服务器了,但这是我第一次尝试使用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

1 个答案:

答案 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模式,以递归方式搜索所有测试文件。