事件触发器(Event)
发布不包含触发器的函数,这是最简单的类型,可以直接通过 event 手动触发参数,也可以在平台绑定其他触发器。
使用方式#
通过直接在代码中的 @ServerlessTrigger 装饰器绑定事件触发器。
import { Provide, Inject, ServerlessTrigger, ServerlessTriggerType } from '@midwayjs/decorator';import { Context, FC } from '@midwayjs/faas';
@Provide()export class HelloAliyunService { @Inject() ctx: Context;
@ServerlessTrigger(ServerlessTriggerType.EVENT) async handleEvent(event: any) { return event; }}本地测试#
通过 createFunctionApp 创建函数 app,通过 getServerlessInstance 获取类实例,然后通过实例的方法直接调用,传入参数进行测试。
describe('test/hello_aliyun.test.ts', () => { let app: Application; let instance: HelloAliyunService;
beforeAll(async () => { // create app app = await createFunctionApp<Framework>(join(__dirname, '../'), { initContext: createInitializeContext(), }); instance = await app.getServerlessInstance<HelloAliyunService>(HelloAliyunService); });
afterAll(async () => { await close(app); });
it('should get result from event trigger', async () => { expect(await instance.handleEvent('hello world')).toEqual('hello world'); });});