javascript - TypeError: oes.addValidationError 不是函数
问题描述
更新
我缩小了这个范围。的值以oes
某种方式从对象切换到true
函数中间的布尔值,并且开关被记录两次。这真的很奇怪。validateProperty
这是我在第 64 行插入函数的内容:
const propertyValue = o[propertyName];
console.log("OES LINE 64: ", oes);
console.log src/utilities/utilities.ts:64
OES LINE 64: ObjectErrors { valid: true, errors: [], cache: {} }
console.log src/utilities/utilities.ts:64
OES LINE 64: true
看起来好像运行时能够以某种方式在oes
函数调用运行时切换值......我猜这是某种 Jest 错误,但它真的不应该发生,因为只有一个测试正在运行.
我用我的日志语句提交了整个存储库,以防有人想查看我上面描述的内容。
原始问题
使用 Jest 运行此测试,对于以下代码,运行时正在记录TypeError: oes.addValidationError is not a function
。
90 | );
91 | console.log("THIS IS THE FUNCTION: ", oes.addValidationError);
> 92 | oes.addValidationError(ve);
| ^
93 | oes.valid = false;
94 | }
95 | }
可以看出我正在记录什么oes.addValidationError
。日志输出如下所示:
console.log src/utilities/utilities.ts:91
THIS IS THE FUNCTION: undefined
console.log src/utilities/utilities.ts:91
THIS IS THE FUNCTION: function (ve) {
var key = utilities_1.getObjectPropertyKey(ve.vc.target.name, ve.vc.propertyName);
this.errors.push(ve);
this.pushtIfAbsent(key, ve);
}
所以看起来函数在第一次尝试 log 语句时是未定义的,然后突然间它定义了自己。
这是oes
实例是构造函数的类。. 可以看出,实例确实定义了方法。
要查看此操作:
git clone https://github.com/fireflysemantics/validator
然后运行:
`npm t src/decorators/IfValid.spec.ts`
如果我注释掉大部分测试并运行它:
let oes = new ObjectErrors();
expect(typeof oes.addValidationError === "function").toBeTruthy();
测试通过...
解决方案
它已被修复。对我来说,即使有编译错误,测试也在运行,所以我认为这是ts-jest
. 在那里打开了另一个问题。
推荐阅读
- node.js - Express.js 与 mssql 高效的池管理
- apache-spark - 添加新的列和行
- android - 高程在 PopupWindow Android 中不起作用
- java - 在 chrome://flags 中启用 SameSite 时,SESSIONID 在 HTTPServletRequest 对象中不可用
- time-complexity - Big O 表示法中 g(n) 的值
- ssl - 上游代理和 CA 配置
- sql - 为整数中的每个数字生成行
- javascript - 有没有办法只在现成的代码镜像编辑器上检测 keydown 事件
- function - 如何将 1 添加到 Google 表格/Excel 中某个范围的每个单元格
- php - 自动选择存储在数据库中的值,其余显示为下拉列表