Как вызвать фиктивную службу внутри предыстории в тестовом примере Angular 5 с жасмином / кармой - PullRequest
0 голосов
/ 19 ноября 2018

Я сталкиваюсь с проблемой при вызове фиктивного сервиса внутри функции beforeEach. Чтобы получить токен доступа из логина, мне нужно запустить этот фиктивный сервис для всех функций в файле спецификации, чтобы мы могли заставить его запускаться упорядоченно.

beforeEach(inject([LoginService, MockBackend], (Service: LoginService, mockBackend: MockBackend) => {
    loginService = Service;
    backend = mockBackend;

    it('#login should call endpoint and return it\'s result', (done) => {
        backend.connections.subscribe((connection: MockConnection) => {
            const options = new ResponseOptions({
                body: JSON.stringify({ success: true })
            });
            connection.mockRespond(new Response(options));
            // Check the request headers
            expect(connection.request.headers.get('Content-Type')).toEqual('application/json');
        });

        loginService.login('new', 'secret')
        .subscribe((response) => {
            sessionStorage.setItem('token', JSON.stringify(response.token));
            done();
            fixture = TestBed.createComponent(DashboardComponent);
            router.initialNavigation();
            component = fixture.componentInstance;
            fixture.detectChanges();
        },
        (error) => {
            expect(error).toThrowError();
        });
    });
}));
...