强烈建议基于测试驱动
开发。测试驱动
开发,可以有效沉淀开发成果,当代码出现变更时也能尽快锁定潜在问题,从而显著提升代码的鲁棒性
CabloyJS在EggJS
的基础上,提供了一个便捷的框架,可以很方便的实现基于测试驱动
的开发
模块test-party
模块test-party
是开箱即用的测试模块,提供大量的测试驱动
开发指引。包含CabloyJS所有内置核心模块的测试用例
,不仅可以验证CabloyJS架构本身的鲁棒性,也可以作为实际业务开发的代码范本
在本教程中,示范了以下几个环节的测试。您可以此为范例,不断扩充测试用例
,尽可能多的提高代码覆盖率
- 用户登录
- 新建party
- 提交party(从
草稿状态
提交到正式状态
) - 查询party
- 删除party
测试代码
src/suite-vendor/test-party/modules/test-party/backend/test/controller/test.test.js
- 1const { app, mockUrl, mockInfo, assert } = require('egg-born-mock')(__dirname);
- 2
- 3describe('action: atom: party', () => {
- 4 it('[atom]', async () => {
- 5 app.mockSession({});
- 6
- 7 // atomClass info
- 8 const atomClassModule = mockInfo().relativeName;
- 9 const atomClassName = 'party';
- 10
- 11 // login as root
- 12 await app.httpRequest().post(mockUrl('/a/authsimple/passport/a-authsimple/authsimple')).send({
- 13 data: {
- 14 auth: 'root',
- 15 password: '123456',
- 16 },
- 17 });
- 18
- 19 // create
- 20 let result = await app.httpRequest().post(mockUrl('/a/base/atom/create')).send({
- 21 atomClass: { module: atomClassModule, atomClassName },
- 22 });
- 23 assert(result.body.code === 0);
- 24 const keyDraft = result.body.data;
- 25
- 26 // submit
- 27 result = await app.httpRequest().post(mockUrl('/a/base/atom/writeSubmit')).send({
- 28 key: keyDraft,
- 29 item: {
- 30 atomName: 'party demo',
- 31 personCount: 3,
- 32 },
- 33 });
- 34 assert(result.body.code === 0);
- 35 const keyFormal = result.body.data.formal.key;
- 36
- 37 // read
- 38 result = await app.httpRequest().post(mockUrl('/a/base/atom/read')).send({
- 39 key: keyFormal,
- 40 });
- 41 assert(result.body.code === 0);
- 42
- 43 // delete
- 44 result = await app.httpRequest().post(mockUrl('/a/base/atom/delete')).send({
- 45 key: keyFormal,
- 46 });
- 47 assert(result.body.code === 0);
- 48
- 49 });
- 50});
名称 | 说明 |
---|---|
mockUrl | 用于构造完整的后端API接口地址 |
mockInfo | 用于获取当前测试所属模块的基本信息。比如当前模块名是test-party ,但为了提升代码的灵活性,可以通过mockInfo().relativeName 获取 |
app.mockSession | 用于模拟Session环境 |
执行测试
- 1$ npm run test:backend
测试覆盖率统计
- 1$ npm run cov:backend
评论: