Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 使用Jest在React Native中对异步存储进行单元测试_React Native_Unit Testing_Jestjs_Enzyme - Fatal编程技术网

React native 使用Jest在React Native中对异步存储进行单元测试

React native 使用Jest在React Native中对异步存储进行单元测试,react-native,unit-testing,jestjs,enzyme,React Native,Unit Testing,Jestjs,Enzyme,我正在学习反应本族语和笑话测试 我有一段代码,当单击按钮时,我将一些值存储在异步存储器中。单击按钮时,我调用下面的方法 saveState = () => { AsyncStorage.setItem('saveState', 'button clicked'); } 现在,我想对上述方法进行单元测试,看看我的异步存储是否工作正常 我可以创建一个快照,还可以测试该方法的其余功能,但这次不行。但我不太熟悉如何做到这一点 第二版------ 在测试文件中,您可以模拟任何外

我正在学习反应本族语和笑话测试

我有一段代码,当单击按钮时,我将一些值存储在异步存储器中。单击按钮时,我调用下面的方法

saveState = () => {
    AsyncStorage.setItem('saveState', 'button clicked');      
}
现在,我想对上述方法进行单元测试,看看我的异步存储是否工作正常

我可以创建一个快照,还可以测试该方法的其余功能,但这次不行。但我不太熟悉如何做到这一点

第二版------


在测试文件中,您可以模拟任何外部模块,然后检查是否使用正确的参数调用该模块,如下所示:

jest.mock('@react native community/async storage',()=>({
setItem:jest.fn(),
}));
//在您的测试中:
expect(AsyncStorage.setItem).toBeCalledWith('saveState','button clicked');

请阅读-总结是,这不是向志愿者讲话的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。嗨,Marek,我已使用您提供的解决方案编辑了上述内容,但我得到了上述错误。此外,我无法更改为“@react native community/async storage”,因为我们的项目正在使用react native的异步存储。除此之外,还有谁能猜出哪里出了问题?我知道您正在从react native导入异步存储?它现在被弃用,所以如果是这样的话,考虑添加<代码> @反应原生社区/异步存储< /代码>包,然后将Jest.McK调整到上面所提供的。否则,这个过去的问题也会有帮助:
jest.mock('react-native', () => ({
    setItem: jest.fn()
}));


describe('<MyComponent/>', () => {
  let tnCScreen
  let props
  let instance

  beforeEach(() => {
    tnCScreen = shallow(<MyComponent {...props} />)
    instance = tnCScreen.instance()
  })

  test('test saveState method is called', () => {
    expect(instance.saveState()).toBeCalled
    expect(AsyncStorage.setItem).toBeCalledWith('saveState', 'button clicked');
  })

})
expect(received).toBeCalledWith(...expected)
Matcher error: received value must be a mock or spy function
Received has value: undefined