Как смоделировать window.location.href с помощью Jest + Vuejs? - PullRequest
0 голосов
/ 03 января 2019

В настоящее время я выполняю модульное тестирование для своего проекта, и существует файл, содержащий window.location.href.

Я хочу смоделировать это для проверки, и вот мой пример кода:

it("method A should work correctly", () => {
      const url = "http://dummy.com";
      Object.defineProperty(window.location, "href", {
        value: url,
        writable: true
      });
      const data = {
        id: "123",
        name: null
      };
      window.location.href = url;
      wrapper.vm.methodA(data);
      expect(window.location.href).toEqual(url);
    });

Но я получаю эту ошибку:

TypeError: Cannot redefine property: href
        at Function.defineProperty (<anonymous>)

Я пробовал некоторые решения, но не решил их.Мне нужно несколько советов, чтобы помочь мне выйти из этой проблемы.Пожалуйста, помогите.

Ответы [ 2 ]

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

Я решил эту проблему, добавив writable: true и переместив его в beforeEach

Вот мой пример кода:

global.window = Object.create(window);
const url = "http://dummy.com";
Object.defineProperty(window, "location", {
    value: {
       href: url
    },
    writable: true
});
0 голосов
/ 03 января 2019

Вы можете попробовать:

global.window = Object.create(window);
const url = "http://dummy.com";
Object.defineProperty(window, 'location', {
  value: {
    href: url
  }
});
expect(window.location.href).toEqual(url);  

Посмотрите на Jest Issue для этой проблемы:
Jest Issue

...