角度测试错误:无法在新的RouterLinkWithHref上读取未定义的属性“subscribe” [英] Angular test error: Cannot read property 'subscribe' of undefined at new RouterLinkWithHref

查看:174
本文介绍了角度测试错误:无法在新的RouterLinkWithHref上读取未定义的属性“subscribe”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道我做错了什么,我没有找到 RouterLinkWithHref 的任何链接到测试中的任何错误,而且我没有在任何地方使用RouterLinkWithHref,就我而言知道:/

I don't get what I'm doing wrong, I didn't find any link of RouterLinkWithHref to any error in tests, furthermore I'm not using RouterLinkWithHref anywhere, as far as I know :/

任何人都可以帮我这个:

Can anyone help me with this:

fdescribe('AddItemComponent: ', () => {
  let cmp: AddItemComponent;
  let fixture: ComponentFixture<AddItemComponent>;
  let de: DebugElement;
  let el: HTMLElement;

  const mockRouter = {
    navigate: jasmine.createSpy('navigate')
  };
  const mockCustomCardService = {
    getItemDeliveryDate: () => Observable.empty(),
    emitItemChanges: () => Observable.empty(),
  };
  const mockActivatedRoute = { snapshot: {} };
  const mockPageDataService = {};
  const mockUserService = {};

  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [AddItemComponent],
      imports: [FormsModule, ReactiveFormsModule, SharedModule, TranslateModule.forRoot(), RouterTestingModule],
      providers: [
        SpinningService,
        FormBuilder,
        TranslateService,
        { provide: Router, useValue: mockRouter },
        { provide: CustomItemService, useValue: mockCustomItemService },
        { provide: PageDataService, useValue: mockPageDataService },
        { provide: UserService, useValue: mockUserService },
        { provide: ActivatedRoute, useValue: mockActivatedRoute }
      ],
      schemas: [NO_ERRORS_SCHEMA]
    });

    fixture = TestBed.createComponent(AddItemComponent);
    cmp = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('Simple test', () => {
    expect(true).toBeTruthy();
  });

});


推荐答案

您应该删除路由模拟( mockRouter mockActivatedRoute ),因为您已导入 RouterTestingModule ,如下所示:

You should remove your routing mocks (mockRouter, mockActivatedRoute) since you already import RouterTestingModule, something like this:

describe('AddItemComponent: ', () => {
  let cmp: AddItemComponent;
  let fixture: ComponentFixture<AddItemComponent>;
  let de: DebugElement;
  let el: HTMLElement;

  const mockCustomCardService = {
    getItemDeliveryDate: () => Observable.empty(),
    emitItemChanges: () => Observable.empty(),
  };
  const mockPageDataService = {};
  const mockUserService = {};

  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [AddItemComponent],
      imports: [FormsModule, ReactiveFormsModule, SharedModule, TranslateModule.forRoot(), RouterTestingModule],
      providers: [
        SpinningService,
        FormBuilder,
        TranslateService,
        { provide: CustomItemService, useValue: mockCustomItemService },
        { provide: PageDataService, useValue: mockPageDataService },
        { provide: UserService, useValue: mockUserService }
      ],
      schemas: [NO_ERRORS_SCHEMA]
    });

    fixture = TestBed.createComponent(AddItemComponent);
    cmp = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('Simple test', () => {
    expect(true).toBeTruthy();
  });

});

这篇关于角度测试错误:无法在新的RouterLinkWithHref上读取未定义的属性“subscribe”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆