模拟函数是"未定义的",但单元测试不会失败



在我的单元测试套件中,我有以下模拟:

  beforeEach(() => {
        NativeModules.MyModule = {
            myMethod: jest.fn()
        };
     })

和使用它的单元测试:

 it('has some functionality', () => {
    console.log(JSON.stringify(NativeModules.MyModule.myMethod));
    expect(NativeModules.MyModule.myMethod).toHaveBeenCalledTimes(1);
});

console.log功能打印undefined,但测试通过。

但是,如果我添加此行:

expect(undefined).toHaveBeenCalledTimes(1);

测试将在此消息中失败:

expect(jest.fn())[.not].toHaveBeenCalledTimes()
jest.fn() value must be a mock function or spy.
Received: undefined

那么,如果NativeModules.MyModule.myMethodundefined

,单位测试如何通过

https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/json/json/stringify

如果未定义,则在转换期间遇到功能或符号 它要么省略(在对象中找到时),要么审查 null(在数组中找到时)。 json.stringify也可以 当传递"纯"值时,返回未定义 json.stringify(function(){})或json.stringify(undefined)。

如果直接记录模拟函数(console.log(NativeModules.MyModule.myMethod)而不是记录 console.log(JSON.stringify(NativeModules.MyModule.myMethod))您应该看到您期望的输出。

例如:

console.log(() => {})
console.log(JSON.stringify(() => {}))

相关内容

  • 没有找到相关文章

最新更新