Невозможно прочитать свойство 'selectionEnd' из null, используя React + Jest + Datepicker + TextMask - PullRequest
0 голосов
/ 08 июня 2018

У меня был работающий модульный тест, но теперь я добавил в свой react-datepicker новый пакет с именем react-text-mask и попытался его смоделировать, но при запуске npm run test я получаю следующее сообщение:

TypeError: Невозможно прочитать свойство 'selectionEnd' со значением NULL

в Object.update (node_modules / response-text-mask / dist / ReactionTextMask.js: 1: 9205)

в t.value (node_modules / реагировать-text-mask / dist / ReactionTextMask.js: 1: 2431)

в t.value (node_modules / реагировать-text-mask / dist / реагироватьTextMask.js: 1: 2490)

в commitLifeCycles (node_modules / реагировать-test-renderer / cjs / реагировать-test-renderer.development.js: 6427: 22)

в commitAllLifeCycles (node_modules / реагировать-test-renderer / cjs / реагировать-test-renderer.development.js: 7516: 7)

My react-datepicker с react-text-mask:

<RCDatePicker
        {...rest}
        locale="pt-BR"
        selected={value}
        onChange={onChange}
        readOnly={readOnly}
        dateFormat={dateFormat}
        minDate={minDays ? moment(baseDate).subtract(minDays, 'days') : undefined}
        maxDate={maxDays ? moment(baseDate).add(maxDays, 'days') : undefined}
        disabled={disabled}
        customInput={<MaskedInput
          mask={[/[0-3]/, /\d/, '/', /[0-1]/, /\d/, '/', /[1-2]/, /\d/, /\d/, /\d/]}
        />}
      >

Моя единицатест:

describe('<DatePicker />', () => {
  it('should have default props', () => {
    const mock = jest.mock('react-text-mask', () => props => <input type="text" {...{ ...props }} />);
    const tree = renderer.create(<DatePicker onChange={Function} />).toJSON()
    jest.spyOn(mock)

    expect(tree).toMatchSnapshot()
  })
})

1 Ответ

0 голосов
/ 11 июня 2018

Я нашел решение, оно было просто выведено за рамки описания.

import React from 'react'
import renderer from 'react-test-renderer'
import { DatePicker } from './DatePicker'

jest.mock('react-text-mask', () => props => <input type="text" {...{ ...props }} />)

describe('<DatePicker />', () => {
  it('should have default props', () => {
    const tree = renderer.create(<DatePicker onChange={Function} />).toJSON()

    expect(tree).toMatchSnapshot()
  })
})
...