测试函数
HTTP 类的函数
该方法适用于所有的类 HTTP 触发器的函数,包括 HTTP
和 API_GATEWAY
。
使用和应用相同的测试方法来测试,针对 HTTP 函数,使用封装了 supertest 的 createHttpRequest
方法创建 HTTP 客户端。
唯一和应用不同的是,使用 createFunctionApp
方法创建函数应用(app)。
createFunctionApp
方法是 createApp
方法在函数场景下的定制(其中指定了函数的 @midwayjs/serverless-app
框架)。
信息
这里不直接使用 @midwayjs/faas
框架,而是使用 @midwayjs/serverless-app
框架,因为后者包含了网关模拟到函数调用的系列步骤。
HTTP 测试代码如下:
import { createFunctionApp, close, createHttpRequest } from '@midwayjs/mock';
import { Framework, Application } from '@midwayjs/serverless-app';
describe('test/hello_aliyun.test.ts', () => {
let app: Application;
beforeAll(async () => {
// create app
app = await createFunctionApp<Framework>();
});
afterAll(async () => {
await close(app);
});
it('should get result from api gateway trigger', async () => {
const result = await createHttpRequest(app).get('/').query({
name: 'zhangting',
});
expect(result.text).toEqual('hello zhangting');
});
});
普通触发器
除了类 HTTP 触发器之外,我们还有其他比如定时器、对象存储等函数触发器,这些触发器由于和网关关系密切,不能使用 HTTP 行为来测试,而是使用传统的方法调用来做。