【发布时间】:2020-01-03 02:11:17
【问题描述】:
我正在使用 TypeScript 构建 Koa REST API,并使用名为 Awilix 的依赖注入库来简化单元测试。
如果我不使用 TypeScript,我会这样编写单元测试:
// setup
const userService = {
getUserById: sinon.stub(),
};
const userController = factory(userService);
// example test
it('works', () => {
userController();
expect(userService.getUserById).to.have.been.called();
});
由于 userService 接口有更多的方法,而不仅仅是getUserById,当你使用 TypeScript 时,我会收到如下错误:
Property 'insert' is missing in type '{ getUserById: SinonStub<any[], any>; }' but required in type 'UserServiceInterface'.
有没有办法解决这个问题,而不必删除依赖项的每一个方法?
谢谢
【问题讨论】:
-
const userService: any = {...}? -
@jonrsharpe userService 的接口比这更严格。这将导致上述相同的错误
-
^ @jshjohnson 我使用
any尝试了这个案例,但没有收到错误 -
这可能会有所帮助:npmjs.com/package/ts-sinon
标签: typescript dependency-injection mocha.js tdd sinon