小编lub*_*bro的帖子

全局 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
查看次数

使用加密API在React中生成UUID

根据 MDM ( https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID ),大多数现代浏览器支持 javascript 本机加密 api,它支持以前的 Node-js 加密标准。

根据普通js中的这篇文章,我可以通过创建一个uuid

crypto.randomUUID()
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在react中使用这个接口吗?由于 crypto 似乎在 React 中引用了一个完全不同的对象。

附:我知道 UUID 包的存在,并且知道它是生成 UUID 的常见方法,我只是好奇。

javascript uuid reactjs

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

javascript ×2

jestjs ×1

reactjs ×1

testing ×1

typescript ×1

uuid ×1