Аполлон GraphQL Тестирование - PullRequest
0 голосов
/ 12 июня 2019

Я новичок в тестировании Apollo GraphQL, и я создал свой первый тест, вы можете увидеть его ниже.

найти-trip.spec.ts

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { FindTripSummaryComponent } from './find-trip-summary.component';
import { ApolloTestingModule, ApolloTestingController } from 'apollo-angular/testing';

export interface Booking {
  firstName: string;
  lastName: string;
}

describe('FindTripSummaryComponent', () => {
  let component: FindTripSummaryComponent;
  let fixture: ComponentFixture<FindTripSummaryComponent>;
  let controller: ApolloTestingController;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ FindTripSummaryComponent ],
      imports: [RouterTestingModule, ApolloTestingModule]
    });

    // tslint:disable-next-line: deprecation
    controller = TestBed.get(ApolloTestingController);
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(FindTripSummaryComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });

  it('should fetch the proper graphQL data', () => {
    component.query.subscribe( (result) => {
      expect(result.data.booking.firstName).toEqual('John');
      expect(result.data.booking.lastName).toEqual('Black');
    });

    const op = controller.expectOne(component.query);

    // Respond with mock data, causing Observable to resolve.
    op.flush({
      data : {
        booking: {
          bookingCode: 'ABC123',
          firstName: 'John',
          lastName: 'Black'
        },
      }
    });
  });

  afterEach( () => {
    controller.verify();
  });
});

Все в порядке, кроме сообщения, которое я получаю при запуске тестов:

Expected no open operations, found 1: GetBookingById

Я довольно дезориентирован, потому что я очищаю ответ, никакие операции не должны быть в состоянии ожидания. Единственное, что я не делаю, это отписываюсь от наблюдаемого, это связано с этим?

Это запрос, который я выполняю:

query GetBookingById($bookingCode: ID!) {
   booking(bookingCode: $bookingCode) {
     bookingCode
     firstName
     lastName
    }
}
...