大佬教程收集整理的这篇文章主要介绍了通过 jasmine 测试 Angular 中的内部功能,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我正在定义一个内部函数并将其分配给一个类变量,以便我可以再次使用它。 那是因为我想访问父函数的参数,但不希望该类的任何其他方法可以访问该数据
@Component({
SELEctor: 'app-report-topup',templateUrl: './report-topup.component.HTML',styleUrls: ['./report-topup.component.sCSS'],})
export class ReporttopupComponent implements OnInit {
loadReports: (pageNum,pageSizE) => voID;
reportDatasource: ReportDatasource;
currentPageDetails: { index: number; size: number } = { index: 0,size: 5 };
constructor(public topuphttpservice: topuphttpservicE){}
ngOnInit(): voID {
this.reportDatasource = new ReportDatasource(this.topuphttpservicE);
}
onReporttopupSearchFormsubmit(formData: ReporttopupSearch) {
this.loadReports = (pageNum,pageSizE) => {
this.reportDatasource.loadReports();
};
this.loadReports(0,this.currentPageDetails.sizE);
this.setCurrentPageDetails(0,this.currentPageDetails.sizE);
}
代码工作正常,但是当我去测试它时,我开始@R_696_9911@。 这是我的 spec.ts 函数:
it('should call load Reports and setCurrentPageDetails on form submit',() => {
spyOn(component,'setCurrentPageDetails');
const reportFormData: ReporttopupSearch = {
company: 'ABC',dateFrom: '2021-01-01',dateto: '2021-01-02',status: 'new',};
component.onReporttopupSearchFormsubmit(reportFormData);
expect(component.loadReports).toBedefined();
expect(component.loadReports).toHaveBeenCalled();
expect(component.setCurrentPageDetails).toHaveBeenCalled();
});
如果我尝试使用 jasmine 中的 spyOn
,测试运行程序会给出一个错误:
如果我尝试使用 jasmine.createSpy
,就像这样:
component.loadReports = jasmine.createSpy('load reports spy',() => {});
我收到错误“预期的间谍,但有一个功能”:
我不知道如何解决这个问题并测试 component.loadReports() 是否已被调用。 虽然 setCurrentPageDetails() 方法的间谍工作正常,因为它是类的方法。 有人可以帮忙吗?
您正在定义 loadReports()
方法的签名,但您没有提供任何实现。当 jasmine
尝试设置间谍时,它需要一个函数,因此无法设置间谍。
为 loadReports()
添加一个实现,以便 jasmine 可以使用以下语法监视它:
spyOn(component,'loadReports');
,
您的问题是您正在实施 loadReports
并立即调用它,无法像这样监视它,SpyOn
需要实施:
loadReports
之前监视 onReportTopupSearchFormSubmit
,它会抱怨 loadReports
不是函数。loadReports
之后监视 onReportTopupSearchFormSubmit
,则为时已晚,因为 loadReports
已经被调用。我的建议是将 onReportTopupSearchFormSubmit
分成两种方法:
以上是大佬教程为你收集整理的通过 jasmine 测试 Angular 中的内部功能全部内容,希望文章能够帮你解决通过 jasmine 测试 Angular 中的内部功能所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。