【发布时间】:2019-12-19 12:48:45
【问题描述】:
我正在尝试为已调用或未调用的方法编写测试用例。在该方法中,我调用了一个警报确认框。
我收到类似
的错误组件.ts失败:this.alertCtrl.create 不是函数
submitTicket(comments) {
if (comments.length > 0) {
const prompt = this.alertCtrl.create({
title: "<span> Improve Solution </span>",
message: "<span>" + 'Are you sure you want <br>' + "</span>" +
"<span>" + 'to submit this improvement' + "</span>",
enableBackdropDismiss: false,
buttons: [
{
text: 'Cancel',
handler: data => {
// Some stuff
}
},
{
text: 'Improve Solution',
handler: data => {
//Some stuff
}
}
]
});
prompt.present();
} else {
this.errorMsg = true;
}
}
组件.spec.ts
import {AlertControllerMock } from 'ionic-mocks';
beforeEach(async(()=> {
TestBed.configureTestingModule({
declarations: [ImprovedsolutionsPage],
imports: [
IonicModule.forRoot(ImprovedsolutionsPage),
HttpClientTestingModule
],
providers: [
NavController,
AppService,
AlertController,
ImprovedsolutionsPage,
{provide: ViewController, useClass: ViewControllerMock},
{provide: LoadingController, useClass: LoadingControllerMock},
{provide: AlertController, useClass: AlertControllerMock},
]
}).compileComponents
}))
beforeEach(()=> {
fixture=TestBed.createComponent(ImprovedsolutionsPage)
component=fixture.componentInstance
fixture.detectChanges()
})
it('should be call submitTicket method', async(()= > {
spyOn(component, 'submitTicket').and.callThrough()
let comment='Needs to improve in detailing '
component.submitTicket(comment)
expect(component.submitTicket).toHaveBeenCalled()
}))
这里我使用 ionic-mocks 模块并导入了 AlertControllerMock,如上面的代码所示。我使用的是 ionic 版本 3。为了测试,我使用的是 Karma 和 jasmine
有人可以帮我解决这个问题。
【问题讨论】:
标签: ionic-framework jasmine karma-runner