Модуль макета машинописного текста с помощью jest и inversify - PullRequest
0 голосов
/ 06 мая 2020

У меня есть приложение для реакции с инверсией. js и один из классов использует модуль «среда»

Я пытаюсь использовать шутку, например: получил

Cannot find module 'environment' from 'config.service.ts'

тоже получил.

logger is undefined

в тесте

1. Как я могу протестировать и имитировать класс inversify с помощью Jest

2. как я могу издеваться над другими зависимостями, такими как environment

env module: environment.d.ts в основном возвращает объект с config

declare module 'environment' {
  import baseEnv from './environments/base';

  const value: ReturnType<typeof baseEnv>;

  export default value;
}

, тогда у меня есть класс с iversify js ,

class 1: config service config.service.ts

import { injectable } from 'inversify';
import environment from 'environment';
import { EnvironmentInterface } from '../../environments/base';
import { IConfig } from './config.interface';

@injectable()
export class ConfigService implements IConfig {
  public config: EnvironmentInterface;

  constructor() {
    this.config = environment;
  }

  get(): EnvironmentInterface {
    return this.config;
  }
}

Logger Class

@injectable()
export class Logger implements ILogger {
  private config: EnvironmentInterface;

  static level = LogLevel.DEBUG;

  constructor(
    @inject(TYPES.ConfigService)
    private readonly configService: IConfig
  ) {
    this.config = this.configService.get();
  }

  debug()

} 

, тогда я хотел бы протестировать следующий файл:

export class OptionsService implements IOptions {

  @inject(TYPES.Api) private api!: Api;

  @inject(TYPES.Logger) private logger!: ILogger;

  async getOptions() {
     apiService.get....
  }
}
...