我在使用jest测试非常简单的javascript代码时遇到了问题。所以我发布代码:傅.jsexport class Foo { constructor() { } someFn() { this.internalFn(); } internalFn() { }}Foo.spec.js jest.mock('../src/foo'); import {Foo} from '../src/foo'; describe('Foo', () => { it ('test foo', () => { const foo = new Foo(); foo.someFn(); expect(foo.someFn.mock.calls.length).toBe(1); expect(foo.internalFn.mock.calls.length).toBe(1); // why received 0 ??? }) })为什么第二个期望失败?foo.internalFn 是从 foo.someFn 调用的。
1 回答

函数式编程
TA贡献1807条经验 获得超9个赞
模拟函数实际上不会做任何事情(除了计算它被调用的频率等)。
这就是为什么当你模拟函数时,你的bever会被调用。internalFn()
someFn()
编辑:只是一些澄清
当您对软件进行单元测试时,您希望对其进行模块化和隔离式测试。函数应该能够独立工作,即使它们被其他函数在内部调用。
当你想测试函数时,你必须模拟,因为你想检查是否真的是通过调用来调用的。someFn()
internalFn()
internalFn()
someFn()
如果你想测试其他任何东西,你必须嘲笑它。someFn()
添加回答
举报
0/150
提交
取消