【问题标题】:React Testing with withRender使用 withRender 进行反应测试
【发布时间】:2018-07-19 11:19:57
【问题描述】:

我正在尝试测试嵌套在 withRouter 中的 App 组件

export default withRouter(App);

在我的 index.js 中

ReactDOM.render(
 <BrowserRouter>
   <App client={client}/>
 </BrowserRouter>,

 document.getElementById('root')
);

我的测试

describe("Test: Home page", ()=>{

  const client = {}

  let w = shallow(<App client={client}/>)

  it("Always render the header", ()=>{
     expect(w.find('header').length).toBe(1)
   });
});

除了没有找到标头,它返回 0 而不是 1 我在网上查看过,但唯一的其他示例是在我尝试检查渲染组件时抓取快照

【问题讨论】:

    标签: reactjs react-router enzyme jestjs


    【解决方案1】:

    我不太确定,但是由于您正在使用路由器导出 App,因此浅层渲染只会渲染路由器组件,而不是 App 组件本身。您可以尝试使用路由器的wrappedcomponent 属性来浅渲染组件本身而不是路由器。

    source and example

    【讨论】:

      【解决方案2】:

      如果您使用酶,请使用mount 而不是shallow。 浅,顾名思义,渲染浅,这意味着不渲染孩子,而 mount 将完全与孩子一起渲染,并且您的标题将出现。

      【讨论】:

        猜你喜欢
        • 2020-01-19
        • 2018-02-08
        • 2021-04-14
        • 2012-01-13
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        • 2022-11-26
        • 2015-01-28
        相关资源
        最近更新 更多