Jest, ферментный тест не пройден для оконной переменной undefined - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь создать объект окна для передачи в мои тесты, который включает переменную окна. Тест выглядит следующим образом:

const baseProps = {};

Enzyme.configure({ adapter: new Adapter() });

const baseWrapper = shallow(
  <DivisionOrderIndex {...baseProps} />,
);

describe('<DivisionOrderIndex />', () => {
  test('renders the MsDataGridServer', () => {
    expect(baseWrapper.find(MsDataGridBulkDelete))
      .toHaveLength(1);
  });

Полученное сообщение об ошибке:

TypeError: Cannot read property 'read_only' of undefined

      300 |             </TitleButton>
      301 |           </div>
    > 302 |           {!window.jsdata.read_only && (
          |                           ^
      303 |             <div id="page-buttons">
      304 |               <a href="/division_order_create" className="btn btn-primary">Create New</a>
      305 |             </div>

Я пытался добавить эти данные в мой объект окна следующим образом:

describe('<DivisionOrderIndex />', () => {
  Object.defineProperty(window, 'jsdata', {
      read_only: false,
    });
  test('renders the MsDataGridServer', () => {
    expect(baseWrapper.find(MsDataGridBulkDelete))
      .toHaveLength(1);
  });

Но я продолжаю получать ту же ошибку. Это правильный способ передать объект окна или переменные? Любой вклад будет оценен.

1 Ответ

0 голосов
/ 04 марта 2020

Это не то, как вы добавляете свойство к объекту. Здесь вы добавляете свойство дескриптора, которое описывает ваш объект, здесь вы можете установить только несколько из них, например writable, configurable et c.

. макет окна объекта в файле setupTests. js, например:

window.jsdata = {
  read_only: false
}
...