Jest / Enzyme есть соответствие для компонента? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть метод компонента React, который возвращает и другой компонент.Есть ли Jest matcher для проверки этого?

Например, мой компонент имеет следующий метод:

class App extends React.Component {

  selectDashboardView(dashboard) {
    if (!dashboard) {
      return null;
    }

    switch (dashboard) {
      case DASHBOARD_TYPE.advisor:
        return <AdvisorDashboard />;

      case DASHBOARD_TYPE.advisor_fund:
        return <AdvisorFundDashboard />;

      case DASHBOARD_TYPE.portfolio:
        return <PortfolioDashboard />;

      case DASHBOARD_TYPE.investor_profile:
        return <InvestorProfileDashboard />;

      case DASHBOARD_TYPE.investment:
        return <InvestmentDashboard />;

      default:
        return null;
    }
  }
  ...
}

Я бы хотел написать такой тест (очевидно, этонедопустимый тест):

describe('App', () => {
  test('selects proper dashboard', () => {
    const wrapper = shallow(<App />);
    const instance = wrapper.instance();

    expect(instance.selectDashboardView('advisor')).toMatch(<AdvisorDashboard />);

  });
});

Обновление: Может быть важно отметить, что эти компоненты подключены к Redux.При тестировании <App /> я импортировал неподключенный компонент, то же самое с <AdvisorDashboard /> и т. Д. Я смог решить проблему с помощью следующего кода:

describe('App', () => {
  test('selects proper dashboard', () => {
    const wrapper = shallow(<App setDashboard={mockFn} setIsAdvisor={mockFn} />);
    const instance = wrapper.instance();

    expect(instance.selectDashboardView('advisor').type.WrappedComponent).toEqual(AdvisorDashboard);
    expect(instance.selectDashboardView('investor_profile').type.WrappedComponent).toEqual(InvestorProfileDashboard);

  });
});

1 Ответ

0 голосов
/ 04 февраля 2019

вы можете попробовать сопоставить имя компонента

expect(instance.selectDashboardView('advisor').constructor.name)
 .toMatch(AdvisorDashboard.name);

или в соответствии с документ вы можете использовать type метод

expect(instance.selectDashboardView('advisor').type()).to.equal(AdvisorDashboard);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...