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