MemoryRouter和笑话测试

时间:2018-12-12 05:54:37

标签: react-router jestjs

https://reacttraining.com/react-router/web/guides/testing

react-router测试文档对我来说有些晦涩。

如何编写测试以检查路线是否呈现

一个组件。 - APage.js

import React, { Component } from 'react'


export default class APage extends Component {
  render() {
    return (
      <div>
        A Page
      </div>
    )
  }
}

根据文档编写单元测试以进行检查。

routes.test.js

import React from 'react'
import { render } from "react-dom";
import APage from './APage'
import {MemoryRouter} from 'react-router-dom';

  test("render route", () => {
    render(
      <MemoryRouter initialEntries={["/apage"]}>
        <APage />
      </MemoryRouter>
    );
  });

出现错误, 不变违规:目标容器不是DOM元素。 用于渲染。

如何编写基本测试,例如测试组件是否在路线上渲染。

2 个答案:

答案 0 :(得分:0)

好的。路线测试必须通过酶来完成。不只是开玩笑。

关注https://medium.com/@antonybudianto/react-router-testing-with-jest-and-enzyme-17294fefd303

使用酶标仪进行测试。

答案 1 :(得分:0)

我认为您应该改用路由器。由于那使用了BrowserRouter。 (请参阅react router example page的替代部分)

import { Router } from 'react-router-dom';

test("render route", () => {
  const history = createMemoryHistory();
  history.push('/apage');
  render(
    <Router history={history}>
      <APage />
    </Router>
  );
});

可能您还应该将页面添加到Route中,但我不确定。

然后将是这样:

import { Router, Route } from 'react-router-dom';

test("render route", () => {
  const history = createMemoryHistory();
  history.push('/apage');
  render(
    <Router history={history}>
      <Route path='/aroute' render={(props) => (<APage {...props} />)} />
    </Router>
  );
});