猿问

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

我在使用jest测试非常简单的javascript代码时遇到了问题。所以我发布代码:


傅.js


export 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 调用的。


德玛西亚99
浏览 132回答 1
1回答

函数式编程

模拟函数实际上不会做任何事情(除了计算它被调用的频率等)。这就是为什么当你模拟函数时,你的bever会被调用。internalFn()someFn()编辑:只是一些澄清当您对软件进行单元测试时,您希望对其进行模块化和隔离式测试。函数应该能够独立工作,即使它们被其他函数在内部调用。当你想测试函数时,你必须模拟,因为你想检查是否真的是通过调用来调用的。someFn()internalFn()internalFn()someFn()如果你想测试其他任何东西,你必须嘲笑它。someFn()
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答