У меня есть служба 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))
})));
});