Skip to content

Demo练习场

Vona 提供了一个 Demo 练习场的功能,允许我们非常方便、快捷的对代码做测试,对想法做验证

步骤

1. 新建demo文件

我们需要新建源码文件:src/backend/demo/index.ts。当前,我们并不需要手工创建此文件,而是执行以下命令,自动创建该文件:

bash
$ npm run demo

2. 编写测试代码

在文件demo/index.ts中,我们写入测试代码:

typescript
export async function main(app: VonaApplication, _argv: IArgv) {
  console.log('server listen: ', app.config.server.listen);
}

3. 执行demo文件

bash
$ npm run demo

举例

1. 模拟请求的上下文环境ctx

typescript
export async function main(app: VonaApplication, _argv: IArgv) {
  await app.bean.executor.mockCtx(async () => {
    // do something in ctx
  });
}

2. 访问Api

比如我们访问首页 Api:

typescript
export async function main(app: VonaApplication, _argv: IArgv) {
  await app.bean.executor.mockCtx(async () => {
    const homeBody = await app.bean.executor.performAction('get', '//');
    console.log(homeBody); // Hello Vona!
  });
}

我们也可以模拟中文的 ctx,然后访问首页 Api:

typescript
export async function main(app: VonaApplication, _argv: IArgv) {
  await app.bean.executor.mockCtx(async () => {
    const homeBody = await app.bean.executor.performAction('get', '//');
    console.log(homeBody); // 您好, Vona!
  }, { locale: 'zh-cn' });
}

3. 模拟登录和退出登录

typescript
export async function main(app: VonaApplication, _argv: IArgv) {
  await app.bean.executor.mockCtx(async () => {
    // signin as user: admin
    await app.bean.passport.signinMock();
    // do something
    // signout
    await app.bean.passport.signout();
  });
}

基于 MIT 许可发布