hackycy / egg-typeorm

🔥 TypeORM plugin for Egg.js
MIT License
13 stars 5 forks source link

请问下单元测试测试 service怎么写的? #5

Closed javaswing closed 3 years ago

javaswing commented 3 years ago

如标题所示,下面是一个简单的代码展示

依赖如下:

"@hackycy/egg-typeorm": "^0.3.8",
"egg": "^2.6.1",
"egg-scripts": "^2.6.0",
"mysql2": "^2.2.5"

"egg-bin": "^4.11.0",

entity

@Entity('sys_app_config')
class SysAppConfig  {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  appName: string;

  @Column({ nullable: true })
  appIcon: string;

  @Column()
  appStatus: number;

  @Column({ nullable: true })
  remark: string;
}

service

import { Service } from 'egg';

export default class SysAppConfigService extends Service {

  async save(appConfig) {
    await this.ctx.repo.SysAppConfig.save(appConfig);
  }
}

service-test

import { app, assert } from 'egg-mock/bootstrap';

describe('test/app/service/SysAppConfig.test.js', () => {

  // afterEach(mock.restore);

  it('SysAppConfig create', async () => {
    const ctx = app.mockContext();
    // console.log('ctx :>> ', ctx);
    const result = await ctx.service.sysAppConfig.save({ appName: 'test', appStatus: 1 });
    assert(result);
  });
});

运行结果

yarn run v1.22.5
$ egg-bin test

  test/app/service/SysAppConfig.test.js
    1) SysAppConfig create

  0 passing (555ms)
  1 failing

  1) test/app/service/SysAppConfig.test.js
       SysAppConfig create:
     TypeError: Cannot read property 'save' of undefined
      at SysAppConfigService.save (app/service/sysAppConfig.ts:6:38)
      at Context.<anonymous> (test/app/service/sysAppConfig.test.ts:10:51)
      at processImmediate (internal/timers.js:456:21)
      [use `--full-trace` to display the full stack trace]

请大佬告知!

hackycy commented 3 years ago

@javaSwing 请更新到最新v0.4.0版本即可。先前的版本没能在单元测试环境下运行,这是个bug。单元测试示例也增加在了example中。

javaswing commented 3 years ago

感谢大佬,这个测试单个功能终于简单多点了!