我正在学习React Native和Jest测试。
我有一段代码,当单击按钮时,我将一些值存储在AsyncStorage中。单击按钮后,我将调用以下方法。
saveState = () => {
AsyncStorage.setItem('saveState', 'button clicked');
}
现在,我想对上述方法进行单元测试,以查看我的异步存储是否工作正常。
我能够创建快照并测试该方法的其余功能,但不能测试这一功能。但是我不太熟悉该怎么做?
第二次编辑------
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
答案 0 :(得分:0)
在测试文件中,您可以模拟任何外部模块,然后检查是否使用正确的参数调用了该模块,如下所示:
jest.mock('@react-native-community/async-storage', () => ({
setItem: jest.fn(),
}));
// in your test:
expect(AsyncStorage.setItem).toBeCalledWith('saveState', 'button clicked');