Я добавляю в свой класс пользовательский класс, а также 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
. Сеанс отладки немедленно завершается (молча) в той же позиции.
Там нет никакой дополнительной информации, дающей мне подсказку о том, что идет не так.
Есть идеи?