Есть ли способ использовать InverifyJS с typemoq? - PullRequest
0 голосов
/ 29 ноября 2018

Я был бы рад, если бы кто-нибудь дал мне совет, как использовать 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 мой поддельный сервис.

...