Как исправить «не может прочитать подписку на свойство» из неопределенного во время углового модульного тестирования? - PullRequest
0 голосов
/ 03 января 2019

Angular6 - Ошибка модульного тестирования «Невозможно прочитать свойство« подписка »на неопределенное значение»

Я писал модульный тест для углового компонента, который имеет несколько зависимостей. Один из этих зависимых сервисов имеет некоторые свойства как наблюдаемые. Я пытался издеваться над этим сервисом, но выдает ошибку, как в заголовке,

spec.ts

describe('Component', () => {
let mockService= jasmine.createSpyObj(['property1', 'property2', 'property3']);

beforeEach(async(() => {
    TestBed.configureTestingModule({
declarations: [testComponent],
providers: [
......someOther,
{ provide service, useValue: mockService},
......someOther
]
}).compileComponents();

fixture = TestBed.createComponent(testComponent);
component = fixture.componentInstance;
}));

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

файл TS имеет

this.Service.property1.subscribe(() => {})
this.Service.property2.subscribe(() => {})
this.Service.property3.subscribe(() => {})

Ожидается, что тестовый сценарий пройден, но завершится неудачно с ошибкой, как в заголовке

1 Ответ

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

Вместо создания шпиона таким способом попробуйте создать шпиона в

, а затем

в блоке

compileComponents

Вот так

let service:Service

.compileComponents().then(()=>{

  spyOn(service:Service, 'any method / property').and.returnValue(Observable.of(MOCKDATA));

)}

Надеюсь, это поможет

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