Как я могу проверить, равен ли компонент prop другой функции prop? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть компонент с проп, вызывающий функцию пропуска, передающую значение.Как мне написать тест с использованием энзима для того же самого?


<LabeledInput
                name='zip'
                onChange={this.props.onChange}
                onBlur={() => this.props.onBlur('zip')}
              />
beforeEach(() => {
    props = {
      onChange: sinon.spy(),
      onBlur: sinon.spy(),
    };
    wrapper = shallowWithIntl(<ContactCard {...props}/>);
  });
it('should call onChange prop', () => {
    const labeledInputs = wrapper.find(LabeledInput);
    let zipInput = labeledInputs.filterWhere(input => input.props().name === 'zip');
    expect(zipInput.props().onChange).to.equal(props.onChange);
  });

  it('should onBlur prop ', () => {
    const labeledInputs = wrapper.find(LabeledInput);
    let zipInput = labeledInputs.filterWhere(input => input.props().name === 'zip');
    expect(zipInput.props().onBlur).to.equal(props.onBlur);
  });

первый (тест onChange) работает.Второй выводит ошибку «AssertionError: Ожидается [Function: onBlur] равной [Function: proxy]»

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Вы сравниваете две разные ссылки на функции и пытаетесь утвердить их равными.

onBlur={() => this.props.onBlur('zip')} создает новую ссылку на функцию, которая затем вызывает this.props.onBlur('zip')

В вашем утверждении вы пытаетесь сопоставить () => this.props.onBlur('zip') === this.props.onBlur('zip'), что всегда будет ложным.

FWIW [Function: proxy] для шпионской функции.

Возможное исправление, возможно, можно поискать toHaveBeenCalled в onBlur prop и утверждать таким образом.

В мире синонов это похоже на использование одного из трех ниже:

  • expect(props.onBlur.called).to.equal(true);
  • sinon.assert.called(props.onBlur);
  • assert(props.onBlur.called);
0 голосов
/ 22 мая 2019

Мне удалось смоделировать событие размытия и проверить, что функция опоры вызывается следующим образом.

zipInput.props (). ONBLUR ()

ожидать (props.onBlur.calledWith ( 'молния')) to.be.true;.

...