代码之家  ›  专栏  ›  技术社区  ›  Enrique Moreno Tent

使用上下文使用者对组件进行单元测试

  •  1
  • Enrique Moreno Tent  · 技术社区  · 6 年前

    class Foo extends React.Component {
        render() {
            return (
                <div className="Foo">
                    <div id="user">Bar</div>
                    <SomeOtherComponent />
                </div>
            )
        }
    }
    

    这个测试:

    it('renders a help button', () => {
      expect(shallow(<Foo />).find('#user').length).toEqual(1);
    });
    

    但现在我已经向这个对象添加了一个上下文使用者:

    class Foo extends React.Component {
        render() {
            return (
                <UserContext.Consumer>
                    {({user}) => (
                        <div className="Foo">
                            <div id="user">{user}</div>
                            <SomeOtherComponent />
                        </div>
                    )}
                </UserContext.Consumer>
            )
        }
    }
    

    • “#user”的数量为1
    • 显示的用户就是提供的用户
    1 回复  |  直到 6 年前
        1
  •  1
  •   Herman Starikov    6 年前

    你可以嘲笑 UserContext.Consumer 使用某个硬编码用户进行渲染。不知道如何导出 UserContext ,但看起来是这样的:

    jest.mock('path/to/UserContextModule', () => ({
      UserContext: {
        Consumer: ({children}) => children({user: 'User'})
      }
    }))
    

    你剩下的测试将保持不变。