Enzyme Shallow Render не работает из-за компонента, пытающегося проверить window.navigator.userAgent - PullRequest
0 голосов
/ 05 июля 2019

Я новичок в области полного стека в целом и только что получил задачу написания модульных тестов для наших интерфейсных компонентов.Я начинаю с самого простого теста рендеринга, но уже столкнулся с проблемой.Вы видите, что мы используем Material UI для стиля и особенно стиль Fuse.Компонент My may является компонентом FusePageCarded и имеет подкомпонент FuseScrollBars.Этот компонент полосы прокрутки использует пакет с именем mobile-Detection, который принимает window.navigator.userAgent в качестве аргумента, чтобы увидеть, на каком типе устройства находится пользователь.Теперь, очевидно, мелкий рендер не будет иметь окна, так как он не запускается в браузере, поэтому тест не пройден, потому что окно не определено.Кто-нибудь сталкивался с подобными проблемами с компонентами Fuse в прошлом, или у кого-нибудь есть мысли, как это обойти?Мой тестовый код ниже.Спасибо.

import React from "react";
import enzyme, { shallow } from "enzyme";
import Patients from "../Patients";
import * as PatientTypes from "../../PatientTypes";
import adapter from "enzyme-adapter-react-16";
import configureStore from "redux-mock-store";

enzyme.configure({ adapter: new adapter() });

describe("Patients Component", () => {
  const initialState = {
    currentDaysNo: 1,
    hypertensiveState: "All",
    patientType: PatientTypes.PATIENT_TYPE_1.patientType,
    patientStatus: "All",
    pulseOx: "all",
    heartRateState: "all",
    clinic: "all",
    pageNo: 1,
    pageSize: 25,
    order: "asc",
    orderBy: null,
    searchText: ""
  };
  const mockStore = configureStore();
  let container;
  let store;

  beforeEach(() => {
    store = mockStore(initialState);
    container = shallow(<Patients store={store} />);
  });

  test("renders", () => {
    expect(container.length).toEqual(1);
  });
});

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

...