Как переопределить глобальный объект 'документ' в тесте jest junit? - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу проверить этот класс

export class FancyStuff extends React.Component<Props> {

  componentWillMount() {
    this.customBody = this.props.customBody ||  document.body;
    ...

Как вы можете видеть, если я не укажу свойство customBody, компонент попытается получить тело документа.

Однако для целей тестирования мне нужно убедиться, что document.body это макет.На этом этапе у меня нет возможности реорганизовать код для зависимости, чтобы внедрить объект documen t.

Можно ли в любом случае переопределить этот document.body глобально в моем модульном тесте?

Я пробовал что-то вроде document = mockWindow.document; перед тем, как смонтировать FancyStuff:

beforeEach(() => {

    const mockWindow = {
      document: {
        body: {
          appendChild: jest.fn(),
          insertBefore: jest.fn(),
          iamabody: jest.fn(),
        },
    }
    jest.spyOn(window, 'open').mockReturnValue(mockWindow);


  it('test fancystuff', () => {
    document = mockWindow.document;  // What I tried
    mount((
       <FancyStuffContainer/> // it uses FancyStuff
    ))

, но я не могу переопределить document.body.

Как я могу сделать это в шутку?

Я использую следующие версии:

"jest": "^23.2.0",
"jest-junit": "^5.1.0",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...