Угловой шпион На не работает для заглушки - PullRequest
0 голосов
/ 07 января 2019

У меня есть приложение angular 4, и я пишу тестовые примеры, используя jasmin + Karma

Мой первый тестовый пример работает правильно, так как он создает экземпляр компонента и службы,

Но второй тестовый набор не работает, так как он не может извлечь фиктивные данные для метода 'getorders', когда я регистрирую его значение не определено.

    beforeEach(async(() => {
        TestBed.configureTestingModule({
          declarations: [ OrderListComponent ],
          providers: [
            OrderFormFetchService,
          ],
          imports: [
            BrowserModule,
            BrowserAnimationsModule,
            FormsModule,
            ReactiveFormsModule,
            HttpClientModule,
            RouterModule.forRoot([]),
            NglModule.forRoot({svgPath: 'assets/icons'}),
          LayoutModule,
          NgbModule.forRoot()
        ],
        })
        .compileComponents();
      }));


 beforeEach(() => {
        orderFormFetchService = TestBed.get(OrderFormFetchService);
        fixture = TestBed.createComponent(OrderListComponent);
        component = fixture.componentInstance;
        orderListStub = [{
          'id': '5c18e74dd5ab9332cc473c94',
          'createdAt': '2018-12-18T12:25:49.507Z',
          'updatedAt': '2018-12-18T12:25:49.507Z',
          'name': 'apple',
          'website': 'www.apple.com',
          'secsId': ''
        }];
        spyOn(orderFormFetchService, 'getorders').and.returnValue(Observable.of(orderListStub));
        fixture.detectChanges();
      });

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

     it('check order list ', () => {
      console.log(orderFormFetchService.getorders()); // -> undefined
      expect(component.orderList).toBeDefined();
      //  expect(component.orderList).toEqual(orderListStub);
      });

Код в OrderListComponent выглядит следующим образом,

export class OrderListComponent   extends BaseComponent implements OnInit {

  defaultQuery = {website: null, name: null};
  orderList: any;
  query = _.clone(this.defaultQuery);
  date: Date;

  constructor(private orderFormFetchService: OrderFormFetchService) { super(); }

  ngOnInit() {
    this.date = new Date();
    this.getOrderList();
  }

  getOrderList(): void {
    this.orderFormFetchService.getOrders()
      .subscribe((res: Response) => {
        if (_.isArray(res)) {
          this.orderList = _.orderBy(res, [order => order.name.toLowerCase()], ['asc']);
        } else {
          this.orderList = [res];
        }
      });
  }
  }

Пожалуйста, помогите

...