【问题标题】:Ionic3 testing : TypeError: Cannot read property 'subscribe' of undefinedIonic3 测试:TypeError:无法读取未定义的属性“订阅”
【发布时间】:2018-04-03 20:44:02
【问题描述】:

我正在开发一个应用程序,并在使用 Jasmine 和 Karma 进行测试时收到此错误,但仅针对一页:

TypeError:无法读取未定义的属性“订阅” 在新内容 (webpack:///node_modules/ionic-angular/components/content/content.js:218:0

我尝试了以下主题提供的解决方案:

我是 AngularJS 和 Ionic 的新手,所以我没有太多经验。 我做了一些模拟来提供我的规范文件,你可以在这里看到:

describe('Page : ListMaster', () => {
    let fixture;
    let component;

    beforeEach(async(() => {
        TestBed.configureTestingModule({
        declarations: [ListMasterPage],
        imports: [
        IonicModule.forRoot(ListMasterPage)
        ],
        providers: [
            { provide: StatusBar, useClass: StatusBarMock },
            { provide: SplashScreen, useClass: SplashScreenMock },
            { provide: Platform, useClass: PlatformMock },
            { provide: NavController, useClass: NavMock },
            { provide: NavParams, useClass: NavMock },
            { provide: Games, useClass: GamesMock },
            { provide: User, useClass: UserMock },
            { provide: Tracking, useClass: TrackingMock },
            { provide: ViewController, useClass:ViewControllerMock },
            LocalNotifications,
        ]
    })
}));

beforeEach(() => {
    fixture = TestBed.createComponent(ListMasterPage);
    component = fixture.componentInstance;
});
it('Est créé', () => {
    expect(component instanceof ListMasterPage).toBe(true);
});
it('appel fonction scrollToCurrentLevel', () => {
    let subscribeEl = fixture.platform.resume.subscribe();
    expect(fixture.scrollToCurrentLevel).toHaveBeenCalled();
});

这里是我的 list-master.ts 文件的 ionViewDidLoad ,它产生了错误(至少我猜它来自这里):

    ionViewDidLoad() {
    this.platform.ready().then(() => {
        this.platform.resume.subscribe(() => {
            this.user.setCreditsBack(3).then((response: any) => {
                this.credits = this.user.getCreditsNb();
            }).catch(err => {
                let toastCreditErreur = this.toastCtrl.create({
                    message: 'erreur de recreditation',
                    duration: 3000,
                    position: 'middle'
                });
                toastCreditErreur.present();
                console.log(err);
            });
        });
    });

如果有人知道这个错误是关于什么的并且可以帮助我,那就太好了! 谢谢大家!

【问题讨论】:

    标签: angularjs ionic-framework ionic3 karma-jasmine


    【解决方案1】:

    通过添加修复它:

    public writeReady = {
            subscribe() {
    
            }
    

    在我的 ViewControllerMock 中

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2018-02-13
      • 2019-04-06
      • 2020-06-17
      • 1970-01-01
      • 2020-08-05
      相关资源
      最近更新 更多