Angular: Есть ли способ автоматически создавать фиктивные методы и свойства для зависимостей конструктора в angular? - PullRequest
0 голосов
/ 24 июня 2019
constructor(private a:dependencyA,private  b:dependencyB,private  c:dependencyC){

}

зависимость может выглядеть следующим образом:

export class dependencyA {
  showPopup: boolean;
  defaultProperties = {
    showPopup: this.showPopup,
  };
  private propertiesSource = new BehaviorSubject(this.defaultProperties);
  currentProperties = this.propertiesSource.asObservable();
}

Чтобы выполнить модульное тестирование, мне нужно будет написать заглушки для каждой зависимости конструктора вместе с фиктивными данными или методами внутри каждой заглушки вручную, чтобы она работала.

Что-то вроде:

class dependencyAStub{
  defaultProperties = {
    showPopup: false,
  };
  private propertiesSource = new BehaviorSubject(this.defaultProperties);
  currentProperties = this.propertiesSource.asObservable();
  push(value){
    this.propertiesSource.next(value);
  }
}

и

 TestBed.configureTestingModule({
      declarations: [ ComponentDetailsComponent ],
       providers: [{ provide: dependencyA, useClass: dependencyAStub }],
providers: [{ provide: dependencyB, useClass: dependencyBStub }],
providers: [{ provide: dependencyC, useClass: dependencyCStub }],
    })

Есть ли лучший способ предоставить фиктивные заглушки для всех зависимостей? Если в конструкторе компонента имеется 8 зависимостей, каждая из которых имеет 4-5 функций и свойств. Мне придется потратить много времени на написание заглушек. Было бы здорово, если бы я мог генерировать заглушки и т. Д. Автоматически и мог бы указать конкретные значения для одной или нескольких зависимостей вручную для тестирования.

1 Ответ

0 голосов
/ 24 июня 2019

Вы можете попробовать Jasmine-Mock-Factory, https://www.npmjs.com/package/jasmine-mock-factory

Эта библиотека дает вам возможность не создавать заглушки для независимых зависимостей. Библиотека также предоставляет достойную документацию для начала работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...