相关疑难解决方法(0)

全局 Jest SpyOn 函数不调用原始函数

我希望有人可以帮助我理解 js 原型和jest.spOn().

我有一个小示例:文件中的示例类TestObj.ts

export default class TestObj {
  foo() {
    // Do Something e.g.
    console.log("Hello World!");
  }
}
Run Code Online (Sandbox Code Playgroud)

以下示例测试用例成功,但console.log从未执行。

import TestObj from './TestObj';

const spyObj = jest.spyOn(TestObj.prototype, 'foo');
test('debug test', () => {
  const obj = new TestObj();
  obj.foo();
  expect(spyObj).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)

如果我将示例测试用例更改为以下内容,则测试会成功并且该console.log语句将按预期调用。

import TestObj from './TestObj';

test('debug test', () => {
  const spyObj = jest.spyOn(TestObj.prototype, 'foo');
  const obj = new TestObj();
  obj.foo();
  expect(spyObj).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)

知道为什么使用全局间谍变量的版本不能按预期工作吗?


编辑:

它似乎与原型无关。对于没有任何类的函数也存在同样的问题,将第一个代码片段 ( TestObj.ts) 编辑为: …

javascript testing typescript jestjs

10
推荐指数
1
解决办法
5012
查看次数

标签 统计

javascript ×1

jestjs ×1

testing ×1

typescript ×1