我的背景是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'];
来解析绑定,并且在单元测试期间,我可以创建一个模拟并换出。
我无法在打字稿中找到实现相同功能所需的信息。有任何指导吗?