Ошибка при подписке с http-запроса angular - PullRequest
0 голосов
/ 10 октября 2019

Я работаю над тестовым угловым приложением. (Не спрашивайте, почему, это то, чего хочет клиент)

Ниже приведена спецификация, которую я не могу modify или edit.

  it('should get results', fakeAsync(
    inject(
      [XHRBackend, NewsService ],
      (mockBackend: MockBackend, newsService: NewsService) => {

      const expectedUrl = 'https://api.nytimes.com/svc/topstories/v2/home.json?api-key=315a5a51483b469a918246dc2753b339';

      mockBackend.connections.subscribe((connection : MockConnection) => {
          expect(connection.request.method).toBe(RequestMethod.Get);
          expect(connection.request.url).toBe(expectedUrl);

          connection.mockRespond(new Response(
            new ResponseOptions({ body: mockResponse })
          ));
        });

      newsService.getSectionNews('home')
        .subscribe( (res: any) => {
            expect(res).toEqual(mockResponse);
        });
    })
  ));

Итак, основываясь на спецификацииМне нужно написать свой код переднего конца.

Так вот, что я написал,

  import { Http } from '@angular/http';

  constructor(private http: Http) {}

  getSectionNews(sectionName: string): any {
    // fetch news of that sectionName
   // return this.mockResponse;
   const expectedUrl = 'https://api.nytimes.com/svc/topstories/v2/home.json?api-key=315a5a51483b469a918246dc2753b339';
   return this.http.get(expectedUrl).subscribe(res => res);
  }

Но во время выполнения тестового примера я получаю эту ошибку:

TypeError: newsService.getSectionNews (...). Подписка не является функцией

пожалуйста, скажите мне, что я делаю здесь неправильно.

Я хотел пройти тестовый набор.

ОБНОВЛЕНИЕ

После обновления моей спецификации сервиса.

  getSectionNews(sectionName: string): Observable<any> {
    const expectedUrl = `https://api.nytimes.com/svc/topstories/v2/${sectionName}.json?api-key=315a5a51483b469a918246dc2753b339`;
    return this.http.get(expectedUrl);
  }

Теперь я получаю следующее сообщение об ошибке:

Ожидаемый ответ со статусом: ноль ноль для URL: ноль для равных Objectt ({status: 'OK', copyright: 'C ...

...