【发布时间】: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