Насмешка над яредисом с ц-мокито молча проваливается - PullRequest
0 голосов
/ 12 марта 2019

Я добавляю в свой класс пользовательский класс, а также ioredis через переворачивает фабрики :

import { inject } from 'inversify';
import * as Redis from 'ioredis';
import { MyOtherClass } from './MyOtherClass';

export class MyClass {
  private redis!: Redis.Redis;
  private myOther!: MyOtherClass;

  constructor(@inject(TYPES.MYOTHERCLASS) private readonly myOtherFactory: () => Promise<MyOtherClass>,
              @inject(TYPES.REDIS_FACTORY) private readonly redisFactory: () => Promise<Redis.Redis>) {
  }

  public async init(): Promise<void> {
     this.myOther = await this.myOtherFactory();
     console.log('a');

     this.redis = await this.redisFactory();
     console.log('b');
  }
}

В моем тестовом файле я делаю:

import 'mocha';
import { instance, mock } from 'ts-mockito';
import * as Redis from 'ioredis';
import { MyClass, MyOtherClass } from '../src';

describy('MyClass', () => {
  let myClass: MyClass;

  const mockedMyOther = mock(MyOtherClass);
  const myOtherFactory = () => Promise.resolve(instance(mockedMyOther));

  const mockedRedis = mock(Redis);
  const redisFactory = () => Promise.resolve(instance(mockedRedis));

  beforeEach( async () => {
    myClass = new MyClass(myOtherFactory, redisFactory);
    await myClass.init();
  });

  it('should init correctly');
});

Когда я запускаю тест, он выводит только a и время ожидания при выполнении redisFactory. Сеанс отладки немедленно завершается (молча) в той же позиции.
Там нет никакой дополнительной информации, дающей мне подсказку о том, что идет не так.

Есть идеи?

...