我的背景是 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'];
解决绑定问题,并且在单元测试期间我可以创建一个模拟并换出。
我找不到在打字稿中实现相同目标所需的信息。请问有什么指导吗?