我正在开发一个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
,这些方法的School
、ClassPeriod
和BellSchedule
(所有包含间接依赖于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)
不起作用。