我希望有人可以帮助我理解 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) 编辑为: …
根据 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 的常见方法,我只是好奇。