模拟 thunk 的内部结构
Mock the internals of a thunk
这是我的测试 运行:
it('dispatches the logout action', () => {
const store = mockStore({});
store.dispatch(logout()); // TODO: logout() has a function in its payload that gives an error
const expectedActions = store.getActions();
expect(expectedActions).toMatchSnapshot();
});
它给我以下错误:(使用这个库:https://github.com/wix/react-native-navigation)
Navigation.getRegisteredScreen: login used but not yet registered
问题是 logout() 操作分派了一个调用 Navigation.startSingleScreenApp
的 thunk(异步)。我不知何故需要模拟此导航 class 或模拟整个 logout() 操作。
我尝试了几种方法:
loginService.logout = jest.fn();
jest.spyOn(Navigation, 'startSingleScreenApp');
但其中 none 似乎有效。
谁能帮帮我?我熟悉嘲笑,但我在这里一无所知。
查看 logout()
的定义会很有帮助。您可以伪造 logout()
中调用的所有方法的实现。我不确定 startSingleScreenApp 的 return 值是多少,但您可以这样做:
jest.spyOn(Navigation, 'startSingleScreenApp').mockImplementation(() => {
/* do something fake */
});
这是我的测试 运行:
it('dispatches the logout action', () => {
const store = mockStore({});
store.dispatch(logout()); // TODO: logout() has a function in its payload that gives an error
const expectedActions = store.getActions();
expect(expectedActions).toMatchSnapshot();
});
它给我以下错误:(使用这个库:https://github.com/wix/react-native-navigation)
Navigation.getRegisteredScreen: login used but not yet registered
问题是 logout() 操作分派了一个调用 Navigation.startSingleScreenApp
的 thunk(异步)。我不知何故需要模拟此导航 class 或模拟整个 logout() 操作。
我尝试了几种方法:
loginService.logout = jest.fn();
jest.spyOn(Navigation, 'startSingleScreenApp');
但其中 none 似乎有效。
谁能帮帮我?我熟悉嘲笑,但我在这里一无所知。
查看 logout()
的定义会很有帮助。您可以伪造 logout()
中调用的所有方法的实现。我不确定 startSingleScreenApp 的 return 值是多少,但您可以这样做:
jest.spyOn(Navigation, 'startSingleScreenApp').mockImplementation(() => {
/* do something fake */
});