模拟自定义方法 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 方法。