如何在控制器中注入ts-mockito模拟对象

时间:2019-06-27 00:47:24

标签: typescript mocha ts-mockito

我的背景是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);
    });
});

我正在尝试将受保护的ratesService与mockedService

换掉

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

我无法在打字稿中找到实现相同功能所需的信息。有任何指导吗?

0 个答案:

没有答案