模拟自定义方法 angular 单元测试 jasmine
Mock custom method to angular unit test jasmine
我已经用 getCurrentNavigation
模拟了路由器,如下所示,
const mockRouter = {
navigate: jasmine.createSpy('navigate'),
getCurrentNavigation: () => {
return {
extras: {
state: {
selectedGamedata: tournamentData,
joined: false
}
}
}
}
}
而tournamentData
只是一个像
这样的常量对象
常量锦标赛数据 = {
...,
expiry_date,
}
并将其添加到规范文件的提供程序列表中
providers: [
DatePipe,
{ provide: Router, useValue: mockRouter },
...
]
然后我的组件中有一行是
let formatedDate = this.datePipe.transform(this.selectedGamedata.expiry_date.toDate(), 'yyyy-MM-dd h:mm:ss');
和错误显示
Failed: this.selectedGamedata.expiry_date.toDate is not a function
现在我想我应该模拟这个 toDate
函数,但现在我不知道。
尝试使用 spyOn
但出现错误
请帮忙
改变这个:
const tournamentData = { ..., expiry_date, }
收件人:
const tournamentData = { ..., expiry_date: { toDate: () => 'Your value here' } }
您的 TypeScript 代码期望 expiry_date
有一个 toDate
方法。
我已经用 getCurrentNavigation
模拟了路由器,如下所示,
const mockRouter = {
navigate: jasmine.createSpy('navigate'),
getCurrentNavigation: () => {
return {
extras: {
state: {
selectedGamedata: tournamentData,
joined: false
}
}
}
}
}
而tournamentData
只是一个像
常量锦标赛数据 = { ..., expiry_date, }
并将其添加到规范文件的提供程序列表中
providers: [
DatePipe,
{ provide: Router, useValue: mockRouter },
...
]
然后我的组件中有一行是
let formatedDate = this.datePipe.transform(this.selectedGamedata.expiry_date.toDate(), 'yyyy-MM-dd h:mm:ss');
和错误显示
Failed: this.selectedGamedata.expiry_date.toDate is not a function
现在我想我应该模拟这个 toDate
函数,但现在我不知道。
尝试使用 spyOn
但出现错误
请帮忙
改变这个:
const tournamentData = { ..., expiry_date, }
收件人:
const tournamentData = { ..., expiry_date: { toDate: () => 'Your value here' } }
您的 TypeScript 代码期望 expiry_date
有一个 toDate
方法。