жасмин имитация стоимости услуги разные - PullRequest
0 голосов
/ 08 мая 2020

Я тестирую свой метод публикации HttpClient с помощью жасмина: но это ошибка, потому что возвращаемое значение моего метода c бизнес-логики является пустым массивом, но если я запустил тот же метод из компонента angular, значение - это заполненный массив, равный моим фиктивным данным.


it('should call POST /MonitoraggioWS/rs/public/getListaCanaliWSR and return all Channels', () => {
    let actualData = {};
    let filter: IChannelFilter = {channelCode:'', resourceId:'', resourceType:'QUEUE'};
    service.getAllChannels(filter).subscribe(data => actualData = data);

    backend.expectOne((req: HttpRequest<any>) => {
      return req.url === `/MonitoraggioWS/rs/public/getListaCanaliWSR` && req.method === 'POST'
    }, 'Load all channels from /MonitoraggioWS/rs/public/getListaCanaliWSR').flush(channels);

    expect(actualData).toEqual(channels);
  });

служба:

    const headers = new HttpHeaders().set('Content-Type', 'application/json');
    return this.httpClient.post<IChannel[]>(`/MonitoraggioWS/rs/public/getListaCanaliWSR`, JSON.stringify(filter),{headers: headers}).pipe(
      map((data: any) => {
        let channelList: IChannel[] = [];
        if(data && data.channelAdapterList){
          data.channelAdapterList.forEach(data =>{
            channelList.push({
              lastUpdateTimestamp: data.lastUpdateTimestamp,lastUpdateUser: data.lastUpdateUser, external: data.external,
              headerExit: data.headerExit, id: data.channelCode, description: data.description, channelCode: data.channelCode,
              headerFormat: data.headerFormat, resourceId: data.resourceId, resourceType: data.resourceType, saviour: data.saviour,
              version: data.version, organizationLevelTwoDefinition: data.organizationLevelTwoDefinition,
              organizationLevelOneDefinition: data.organizationLevelTwoDefinition, mappingOid: data.mappingOid, key: null,
            });
          });
        }
        return channelList;
      }), catchError( error => {
        return throwError( 'MonitoringAPI Something went wrong! '+ error);
      })
    );
  }

Мой тест завершился неудачно, потому что actualDate (возвращаемое значение моего бизнес-метода - Array [ ]), но если я запустил метод из компонента angular, массив будет заполнен теми же значениями, что и мой макет, возможно, проблема в моем бизнес-логе c service?

1 Ответ

0 голосов
/ 08 мая 2020

Я не понимаю весь ваш вопрос, но я считаю, что вы утверждаете не в то время.

it('should call POST /MonitoraggioWS/rs/public/getListaCanaliWSR and return all Channels', 
// add this done argument so we can tell Jasmine when we are done with our assertions
(done) => {
    let actualData = {};
    let filter: IChannelFilter = {channelCode:'', resourceId:'', resourceType:'QUEUE'};
    service.getAllChannels(filter).subscribe(data => { 
            console.log(data); // see the console to make sure it is the mock
            actualData = data; // assign actualData to the mock data
            expect(actualData).toEqual(channels); // do your assertion here
            done(); // call done to let Jasmine know we are done with our assertions.
    });

    backend.expectOne((req: HttpRequest<any>) => {
      return req.url === `/MonitoraggioWS/rs/public/getListaCanaliWSR` && req.method === 'POST'
    }, 'Load all channels from /MonitoraggioWS/rs/public/getListaCanaliWSR').flush(channels);

    // expect(actualData).toEqual(channels); // doing the assertion here is too early
  });
...