Я был бы рад, если бы кто-нибудь дал мне совет, как использовать inversifyJS с typemoq.Я хочу сделать что-то вроде этого
describe('TokenService tests', () => {
let container: Container;
beforeEach(function () {
container= new Container();
});
afterEach(function () {
container = null;
});
it('given_undefined_external_system_cookie_when_generate_token_then_exception_thrown', () => {
const repositoryMock: TypeMoq.IMock<IEditorialOfficeRepository> = TypeMoq.Mock.ofType(EditorialOfficeRepository);
repositoryMock
.setup(x => x.getMap())
.returns(() => Promise.resolve([ObjectMotherFactory.createEditorialOfficeMapDto(1, 2, 'fakt', 1, 'Fakt')]));
container.bind<IEditorialOfficeRepository>(TYPES.EditorialOfficeRepository).to(repositoryMock.object)
let tokenService = container.get(TYPES.EditorialOfficeRepository)
return tokenService.generate(undefined, []).then(x => {
assert.fail();
}).catch(_err => {
});
});
});
TokenService внедрил (по свойству) IEditorialOfficeRepository.Я хочу издеваться над некоторой функцией IEditorialOfficeRepository для возврата определенных данных.
Я хотел бы использовать это следующим образом:
container.bind<IEditorialOfficeRepository>(TYPES.EditorialOfficeRepository).to(repositoryMock.object)
Но я получаю сообщение об ошибке:
Argument of type IEditorialOfficeRepository is not assignable to parameter of type 'new (...args:any[])=> IEditorialOfficeRepository
Я понимаю, что должен поместить туда некоторый тип класса дляиспользовать для создания экземпляра, но как насмехаться над этой функцией?Я хочу зарегистрировать в контейнере IoC мой поддельный сервис.