Как написать модульный тест, чтобы покрыть пользовательские PropTypes в реагировать? - PullRequest
2 голосов
/ 26 марта 2019

У меня есть компонентactjs с пользовательскими свойствами, который на самом деле представляет собой список разрешенных расширений.

Например, мой компонент может получить в качестве поддержки что-то вроде этого:

<CustomComponent allowedTypes={['.pdf', '.txt']} />

и типы опор определяются следующим образом:

CustomComponent.propTypes = {
  allowedTypes: PropTypes.arrayOf(
    (propValue, key, componentName, location, propFullName) => {
      if (!new RegExp(/^\.[^.]+$/).test(propValue[key])) {
        return new Error(
          `Invalid prop ${propFullName} for component ${componentName}.`
        )
      }
    }
  )

Мне необходимо полностью покрыть компонент модульным тестом, поэтому также должен быть указан код в определении типа опоры.

Iпробовал что-то подобное, но это не работает

beforeEach(() => {
  console.error = jest.fn()
});


it('should check wrong allowed types', () => {
  const wrongAllowedTypes = false
  try {
    const component = new CustomComponent(Object.assign(defaultProps, { allowedTypes: wrongAllowedTypes } ))
  } catch (error) {
    expect(console.error).toBeCalled()
  }
})

Любые идеи, заранее спасибо

1 Ответ

1 голос
/ 26 марта 2019

Я предлагаю вытащить функцию жирной стрелки и дать ей имя. Тогда вы можете позвонить прямо из теста.

...