проверьте, использовался ли сеттер - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть установщик / получатель в моей службе

export class fooService {
  set foo(value: number): void {
    this._privateFoo = value;
  }
  get foo(): number {
    return this._privateFoo;
  }

Теперь я издевался над сервисом, используя ts-mockito, и хочу проверить, был ли вызван сеттер. Я попытался проверить переменную с помощью геттера на экземпляре, но это не возвращает мое значение.

компонент (FooComponent):

ngOnInit() {
  this.fooService.foo = 2;
  console.log('Foo Service is now:', this.fooService.foo);

модульный тест:

mockFooService = mock(FooService);
fooService = instance(mockFooService);
...
TestBed.configureTestingModule({
 declarations: [ FooComponent ],
  providers: [
    { provide: FooService: useValue: fooService }
...

component.ngOnInit();
expect(fooService.foo).toEqual(2);

Тест печатает Foo Service is now: 2, но expect завершается неудачно с Expected null to equal 2.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Моя проблема была очевидна: если я издеваюсь над сервисом, он больше не работает. То, что я должен сделать, это или смоделировать сеттер и проверить, вызывается ли он, или использовать реальный сервис.

0 голосов
/ 03 апреля 2019

Используйте сеттер и геттер вместе.

set foo(value: number): void {
  this._privateFoo = value;
}

get foo(): number{
  return this._privateFoo;
}
...