Jest unit test частной переменной в Angular - PullRequest
0 голосов
/ 16 июня 2020

В моем сервисе angular я использую частную переменную и пишу модульный тест с помощью Jest. Моя служба выглядит так:

@Injectable()
export class SampleService {
  private value = '';

  removeValue(): void {
    this.value='';
  }

  setNewValue(value : string): void {
    this.value = value;
  }

  simpleEmptyMethod() {
  }
}

Файл модульного теста sample.service.spe c .ts:

describe('sampleservice', () => {
   let sampleService : SampleService;
   beforeEach(() => {
      TestBed.configureTestingModule({
        providers : [SampleService]
      });
      sampleService=TestBed.get(SampleService);
   });

   it('should be created', () => {
     expect(sampleService).toBeTruthy();
   })

   it('should remove Value', () => {
     sampleService.removeValue();
     expect(sampleService.value).toBe('');
   })

   it('should set new value', () => {
       sampleService.setNewValue('abc');
       expect(sampleService.value).expect('abc');
   })

})

Я получаю сообщение об ошибке типа «значение не определено» . Это может быть связано с тем, что значение является частным в классе обслуживания, и каким будет подход к покрытию пустого метода, поскольку тело метода будет определено в будущем. Как справиться с этим сценарием?

1 Ответ

0 голосов
/ 19 июня 2020

Я не могу воспроизвести вашу ошибку. Несмотря на то, что переменная является частной и вы не должны обращаться к ней, это все же возможно. Вот стек, демонстрирующий прохождение тестов. Вы заметите, что тесты все еще выполняются и проходят, но IDE сообщает мне:

«Значение свойства является частным и доступен только в классе SampleService "

Я бы рекомендовал:

  1. Убедитесь, что вы тестируете интерфейс, а не реализацию.
  2. Если вам необходимо проверить состояние этой службы, либо сделайте свойство value publi c, либо добавьте функцию publi c getValue().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...