使用withRender

时间:2018-02-08 19:11:46

标签: reactjs react-router enzyme jest

我正在尝试测试嵌套在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 我已经在线查看,但唯一的另一个例子是抓取快照而我正在尝试检查渲染的组件

2 个答案:

答案 0 :(得分:0)

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

source and example

答案 1 :(得分:0)

如果您使用酶mount而不是shallow。 浅的名称建议渲染浅,这意味着不渲染子,其中山将完全呈现与孩子,你的标题将存在。