Я новичок в области полного стека в целом и только что получил задачу написания модульных тестов для наших интерфейсных компонентов.Я начинаю с самого простого теста рендеринга, но уже столкнулся с проблемой.Вы видите, что мы используем 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);
});
});
Ожидайте, что результат будет один, но поверхностный рендеринг завершится неудачно, прежде чем мы даже доберемся до теста.