Как проверить global.i18n.t

Google Analytics была добавлена ​​в компонент ReactJS и как тестировать, так как она дает неопределенную ошибку при ее тестировании.

render() {
return (
  <div className='form-wrapper'>
    <h2 className='register-form-title'>{global.i18n.t('great_offers.title')}</h2>
    <OTPForm
      otpChange={this._otpChange}
      errorMessage={this.state.error}
      handleSubmit={this._handleSubmit}
      valid={this.state.valid}
    />
  </div>
);
  }

В приведенном выше коде при выполнении модульного тестирования это говорит: «can not read property t undefined ". Существует ли способ инициализировать его чем-то в start.Moreover global.i18n.t не является допустимым именем переменной в JS, поэтому я не могу его инициализировать.

1
задан 13 August 2018 в 14:04

1 ответ

Jest предоставляет объект global, который можно использовать для настройки глобальных переменных для модульных тестов. Вот пример:

Этот компонент:

import * as React from 'react';

export default ()=> {
  return (
    <div>
      <h2>{global.i18n.t('string_id')}</h2>
    </div>
  );
}

.. можно протестировать следующим образом:

import * as React from 'react';
import { shallow } from 'enzyme';

import Component from './component';

// create global i18n object containing a spy as t()
global.i18n = {
  t: jest.fn((key) => 'global.18n.t() called with ' + key)
}

describe('Component', () => {

  it('should render and call global.i18n.t()', () => {
    expect(shallow(<Component />)).toMatchSnapshot();
    expect(global.i18n.t).toHaveBeenCalledTimes(1);
    expect(global.i18n.t).toHaveBeenCalledWith('string_id');
  });

});

... создание этого моментального снимка:

exports[`Component should render and call global.i18n.t() 1`] = `
<div>
  <h2>
    global.18n.t() called with string_id
  </h2>
</div>
`;

Обратите внимание, что в методе моментальных снимков используется фермент и фермент-json, которые производят хорошо отформатированные снимки.

1
ответ дан 15 August 2018 в 17:03

Другие вопросы по тегам:

Похожие вопросы: