Тестирование вкладок и компонентов вкладок - PullRequest
0 голосов
/ 26 ноября 2018

При обновлении чистых функций с помощью нового декоратора React 16.6 memo() мы обнаружили, что меню навигации было повреждено, поскольку material-ui обрабатывает реквизиты в компоненте вкладок, о которых моя оболочка NavigationTabs не знает.

Чтобы обнаружить подобные ошибки в будущем, мы пытаемся консолидировать наш набор тестов, убедившись, что если щелкнуть вкладку и обновить компонент, новые свойства (например, selected = True) будутустановить как ожидалось.

К сожалению, мы не смогли заставить его работать.Пожалуйста, найдите наш код ниже:

Компонент меню

import React, {FC} from "react";
import Tabs from "@material-ui/core/Tabs";
import Tab from "@material-ui/core/Tab";
import history from "~/history";
import {MINISITE_TABS} from "~/constants";
import "./style.less";

const NavigationTabs: FC = () => (
  <Tabs
    className="minisite-navigation"
    onChange={(event, tablink) => history.push(tablink)}
    value={history.location.pathname}
  >
    {MINISITE_TABS.map(item => (
      <Tab
        label={item.label}
        value={item.link}
        key={item.label}
        disableRipple
      />
    ))}
  </Tabs>
);

export default NavigationTabs;

Тест

import React from "react";
import {shallow} from "enzyme";
import history from "~/history";
import NavigationTabs from "../NavigationTabs";

describe("NavigationTabs Component", () => {
  const wrapper = shallow(<NavigationTabs />).dive();

  it("shows 4 tabs Navigation", () => {
    expect(wrapper).toMatchSnapshot();

    expect(wrapper.find("WithStyles(Tab)")).toHaveLength(4);
  });

  it("should change the page when a tab is clicked upon", () => {
    let tab = wrapper
      .dive()
      .find("WithStyles(Tab)")
      .first();
    expect(tab.prop("selected")).toBeFalsy();

    tab.simulate("click");
    wrapper.find("Tabs").simulate("change", {}, "/story/tab1");
    wrapper.update();
    expect(history.push).toHaveBeenCalledWith("/story/tab1");

    tab = wrapper
      .dive()
      .find("WithStyles(Tab)")
      .first();
    expect(tab.prop("selected")).toBeTruthy();
  });
});

Ошибка

NavigationTabs Component
    ✓ shows 4 tabs Navigation (12ms)
    ✕ should change the page when a tab is clicked upon (14ms)                                              

  ● NavigationTabs Component › should change the page when a tab is clicked upon                            

    expect(received).toBeTruthy()

    Received: false

      29 |       .find("WithStyles(Tab)")
      30 |       .first();
    > 31 |     expect(tab.prop("selected")).toBeTruthy();                                                   
         |                                  ^
      32 |   });
      33 | });
      34 | 

      at Object.toBeTruthy (src/components/pages/MiniSite/Navigation/__tests__/NavigationTabs-test.js:31:34)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 passed, 2 total
Snapshots:   1 passed, 1 total
Time:        1.968s, estimated 2s
Ran all test suites matching /NavigationTabs/i.

Версии:

  • Реагировать 16,6.3
  • Фермент 3.7.0
  • Шут 23.6.0
  • Material-ui 3.1.2

Как вы будете тестировать этот сценарий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...