0

我的背景是 PHP(Laravel 基础),所以如果我不是 100% 认为 Typescript/Nodejs 应该如何工作,请原谅我。

我正在尝试测试一个控制器,supertest我的项目是使用restify和inversify for DI制作的。

使用 Mocha/Chai 和 ts-mockito 进行模拟——我的目标是拒绝一个承诺

when(mockedService.getRates(anything())).thenReject();

我的控制器具有以下构造函数:

  constructor(
    @inject('Service') @named('Rates') protected ratesService: RatesService,
  ) {
    super();
  }

然后进行测试:

describe('Rates Controller', () => {
    const mockedRatesService: RatesService = mock(RatesService);
    when(mockedRatesService.getRates(anything())).thenResolve();

    // Getting instance from mock
    let ratesService: RatesService = instance(mockedRatesService);

    it('returns 200', async () => {
        const res = await supertest(
            app.get<Server>('Server')
        ).get('/rates')
         .set('Accept', 'application/json');

        expect(res.status).to.be.equal(200);
        console.log(res.body);
    });
});

我正在尝试用mockedService

在 Laravel 中,控制器将通过构造函数进行类型提示,或者我将$this->app['my_service'];解决绑定问题,并且在单元测试期间我可以创建一个模拟并换出。

我找不到在打字稿中实现相同目标所需的信息。请问有什么指导吗?

4

0 回答 0