Как макетировать объект документа с помощью Jest / Enzyme в конструкторе React? - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь улучшить охват кода для небольшого количества кода React, который выглядит примерно так:

export default class WuTangClan {
  constructor(props) {
    super(props);
    this.setState(this.getCookie('36chambers'));
  }

  getCookie(name) {
    const value = `;${document.cookie}`;
    const parts = value.split(`; ${name}=`);
    let toReturn;
    if (parts.length === 2) {
      toReturn = parts
        .pop()
        .split(';')
        .shift();
    }
    return toReturn;
  }  
}

Вот фрагмент кода, с которым я борюсь:

enter image description here

Используя энзим, если бы я был mount(<WuTangClan />), он бы затем прошел через getCookie.Проблема в том, что эта функция опирается на document, и потому что jest выполняется в контексте узла, я не могу его высмеять.Это означает, что document пусто, когда выполняются тесты Jest, и поэтому я не могу заставить его прыгнуть.

Я пробовал каждый ответ в этом посте безрезультатно.

Jest "~ 22.2.2" Фермент "^ 2.5.0" Узел "8.8.0"

1 Ответ

0 голосов
/ 28 декабря 2018

Если ваша единственная проблема связана с настройкой файлов cookie, вы можете сделать это, как показано ниже:

it("should return cookie", () => {
    global.document.cookie = "cookie1=foo"; //set cookies in whatever format you like
    document.cookie = "cookie2=bar";
    let page = shallow(<WuTangClan />);
    
    // run assertions here;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...