Пересмешивающие элементы документа, возвращаемые наблюдаемыми - PullRequest
0 голосов
/ 16 января 2019

У меня есть служба Observable, которая ищет элемент в html и возвращает его innerText. Я пытаюсь издеваться над элементом и возвращать его значение через наблюдаемое. Тем не менее, я продолжаю получать Failed: Cannot read property 'getElementById' of undefined. Почему это?

class AuthenticationService {
....
 authenticate(): Observable<boolean> {
    const configText = this.document.getElementById('authentication-config').innerText;
    const parsedValue = JSON.parse(configText);
    const result: boolean = parsedValue.isClient;
    return of(result);
  }
}

Ниже приведен тест, который я написал

describe('AuthenticationService', () => {
  let document, mockElement: any;
  let authService: AuthenticationService;
  let spy: any;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [],
      providers: [
        { provide: DOCUMENT, useValue: document },
      ]
    });
    document = {}
    mockElement = {}
    document.getElementById = jasmine.createSpy('getElementById');
    document.getElementById.and.returnValue(mockElement);
  });

  it('should return a boolean', async(inject([AuthenticationService], (authUser) => {
    mockElement.innerText = JSON.stringify({ isClient: false });
    authUser.authenticate().subscribe(result => expect(result).toBe(Boolean))
  })));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...