默认脚手架依赖中已经增加了 @midwayjs/serverless-invoke 包来进行测试。如果没有安装,可以手动安装一下。

  1. npm i @midwayjs/serverless-invoke --save-dev

普通函数测试

测试的传统目录为 test ,后缀为 ***.test.ts ,内容如下。

  1. import { invoke } from '@midwayjs/serverless-invoke';
  2. import * as assert from 'assert';
  3. describe('/test/index.test.ts', () => {
  4. it('should use default event', async () => {
  5. const result = await invoke({
  6. functionName: 'index', // 传入函数名
  7. data: [ // 函数参数,数组结构,这里的数据会传递给函数的 event
  8. {
  9. name: 'faas',
  10. },
  11. ],
  12. });
  13. assert(result.data === 'hello world, faas');
  14. });
  15. });

可以直接调用 f test 来执行测试。

HTTP 触发器测试

  1. import { invoke } from '@midwayjs/serverless-invoke';
  2. import * as assert from 'assert';
  3. describe('/test/index.test.ts', () => {
  4. it('should use default event', async () => {
  5. const result = await invoke({
  6. functionName: 'index', // 传入函数名
  7. data: [ // 函数参数,数组结构,这里的数据会传递给函数的 event
  8. {
  9. headers: { 'Content-Type': 'text/json' },
  10. method: 'POST',
  11. path: '/test',
  12. query: {
  13. name: 'q',
  14. },
  15. body: {
  16. name: 'test',
  17. },
  18. },
  19. ],
  20. });
  21. // assert result
  22. });
  23. });

更多示例,请参考 https://github.com/midwayjs/cli/blob/master/packages/faas-cli-plugin-invoke/test/http.test.ts

欢迎关注 ➡️ image.png