Пакеты в node_modules не обнаруживают измененного location.pathname. Как изменить location.pathname «при загрузке» еще до выполнения модульных тестов? - PullRequest
0 голосов
/ 16 июня 2020

Я использую этот пакет для маршрутизации в моем приложении. Поскольку я хочу имитировать маршрут, я изменяю URL-адрес браузера из тестового файла следующим образом:

window.history.replaceState({}, "Test", "/abc");

location.pathname перед этим оператором = "/"

location.pathname после этого оператора = "/ ab c"

Он изменяет маршрут, как ожидалось, но даже до того, как location.pathname будет установлен как "/ ab c", location.pathname читается как "/" в крюковом маршрутизаторе package. js файл следующим образом:

node_modules \ hookrouter \ src \ router. js:

import React from 'react';
import isNode from './isNode';
import {setQueryParams} from './queryParams';
import {interceptRoute} from './interceptor';

let preparedRoutes = {};
let stack = {};
let componentId = 1;
let currentPath = isNode ? '' : location.pathname; // here
let basePath = '';
let basePathRegEx = null;
const pathUpdaters = [];

Из-за этого, хотя функция replaceState изменяет маршрут, она не удалось изменить его при загрузке, поэтому файл маршрутизатора пакета js выполняется перед изменением маршрута на «/abc".

Есть ли способ сделать pushState / replaceState и изменить местоположение. путь "при загрузке" еще до выполнения модульных тестов? Пакеты модулей узла должны иметь возможность читать новый набор location.pathname. Пожалуйста, сообщите.

...