【发布时间】:2019-09-17 19:44:16
【问题描述】:
我想测试我的函数,它检查我的变量是否是我正在使用的类型的实例并执行某些操作。 我做了这样的检查,它按预期工作。
myCheckingFunction = () => {
if (target instanceof H.map.Marker) {
...
}
}
但是当我想通过在我的测试中调用函数来测试这段代码时(我正在用 jest 进行测试),那么它会抛出 typeError。
为什么会发生这种情况,我该如何通过?
编辑:
经过进一步调查后,我意识到,仅在测试中调用该函数并假设一切正常,这不会起作用。它与我在myCheckingFunction 中的 instanceof 'H.map.Marker' 中检查的类型相关联。
此时我的项目设置不是最好的,但我必须解决这个问题。这就是我所拥有的:
class MockEventTarget {}
(global as any).H = {
map: {
Marker: MockEventTarget,
},
};
// this is how I call my test for myCheckingFunction
testMyCheckingFunction({target: new MockEventTarget()});
由于我不能只在我的测试中导入 H.map.Marker,我正在创建一个虚拟类。然后创建一个全局变量,我告诉我的测试设置假设 H.map.Marker 是一个类。
使用此设置,我不再从上面收到错误消息,因为我的测试现在实际上可以调用一个虚拟构造函数。
【问题讨论】:
-
究竟是什么错误?
-
TypeError: 'instanceof' 的右侧不可调用
-
什么是 H.map.Marker?
-
它是对象的一种类型。
-
请在您的问题中提供它的定义以及您如何导入它(如果您这样做)。您的问题缺乏足够的信息,现在任何人都无法为您提供帮助。
标签: reactjs typescript jestjs