在我的单元测试套件中,我有以下模拟:
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.myMethod
是undefined
?
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(() => {}))