模拟 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 */
});