为了账号安全,请及时绑定邮箱和手机立即绑定

为什么从模拟类中的另一个函数调用函数的测试失败?

为什么从模拟类中的另一个函数调用函数的测试失败?

德玛西亚99 2022-08-18 10:08:05
我在使用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()


查看完整回答
反对 回复 2022-08-18
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号