Typescript单元测试在是否定义了函数方面存在分歧



我正在开发一个react web应用程序,在试图通过单元测试时遇到了一个非常奇怪的问题。

本质上,我有一个名为Time的javascript类,它本质上只是DateTime的时间组件(它基于Luxon Duration(。我已经将isBefore(Time)isAfter(Time)方法添加到这个类中,以便比较两次。

这些方法在另一个文件中的辅助函数(checkTimeRange(中使用,以实现三元比较(即,它可以判断一个Time是在由另外两个Time表示的范围之前、期间还是之后(。

以下是我的单元测试状态:

  • Time测试:通过,包括isAfter
  • 辅助测试:通过,包括checkTimeRange
  • 由于<variable storing a Time>.isAfter is not a function,这些方法的SchoolClassPeriodBellSchedule(所有包含间接依赖于checkTimeRange的方法的类(测试失败

在研究中,我发现了这一点,它似乎完美地描述了这个问题(至少在标题中(,但解决方案似乎是一个简单的拼写错误,这里似乎不是这样。

我尝试过的东西:

  • 在另一个文件夹中签出项目
  • 删除和重新安装nodemodule
  • 清除纱线缓存
  • 更新依赖项
  • 将函数从public function name () {}语法更改为箭头函数(public const name = () => {}(语法
  • 检查拼写错误和变量阴影
  • 通过yarn test运行测试,并使用我的编辑器中显示的VSCode集成(idk是什么导致了这一点(
  • Time.isAfter的单元测试放在由于isAfter is not a function而失败的案例旁边,以表明不同单元测试文件的设置方式没有差异
  • 纱线从1.17.3更新到1.22.19

我基本上仍然不知道是什么原因导致了这种情况。我有一种感觉,也许Jest内心深处的某种东西没有正常工作,但我真的不知道是什么导致了这种矛盾的行为。

这是回购的分支,如果有人需要更多关于发生的事情的信息,我会看到这种行为

我正在查看的测试是School类的单元测试文件中的最后一个。然而,许多其他类,如ClassPeriod,由于类似的原因,最后一次测试也失败了。

tl;dr :<variable storing a Time>未存储时间。

这是测试错误。

  ● School › can check if school is in session
    TypeError: startTime.isAfter is not a function
      112 |
      113 |     // swap the values if startTime is after end time
    > 114 |     if (startTime.isAfter(endTime)) {
          |                   ^
      115 |         let t = startTime
      116 |         startTime = endTime
      117 |         endTime = t
      at checkTimeRange (src/utils/helpers.tsx:114:19)
      at School.isInSession (src/@types/school.ts:146:13)
      at Object.<anonymous> (src/@types/school.test.ts:97:23)
      at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13)
      at runJest (node_modules/@jest/core/build/runJest.js:404:19)

我将console.log(startTime);console.log(endTime);添加到checkTimeRange

CCD_ 25和CCD_ 26都是不具有CCD_。startTime.isAfter(endTime)不起作用。

最新更新