Симуляция предназначена для запуска на 1 узле = 0 найдено - PullRequest
0 голосов
/ 14 февраля 2019

Невозможно выполнить следующий тест: Использование React JS / энзим и jest

Я уже задавал похожий вопрос и пытался применить тот же метод, но он не проходил.Какой-либо причине ??Заменить мелкое = крепление?или добавить погружение ()?

file.test.js -

 // jest mock functions (mocks this.props.func)
const updateSelectedFormJSON =  jest.fn();
const closeModal =  jest.fn();
const onClick =  jest.fn();
const onSaveClick =  jest.fn();
 // defining this.props
 const baseProps = {
selectedFormJSON :{
    FORM_COLUMN:[],
},
updateSelectedFormJSON,
closeModal,
onClick,
 onSaveClick,

describe('SpecifyBodyModal Test', () => {
 let wrapper;
 let tree;

beforeEach(() => wrapper = mount(<SpecifyBodyModal {...baseProps} />));

    it('should call  closeModal functions on button click', () => {
   baseProps.closeModal.mockClear();
   wrapper.setProps({
  updateSelectedFormJSON :null
  });
 wrapper.find('.add-custom-field-close').at(0).simulate('click')
 expect(baseProps.closeModal).toHaveBeenCalled();
 });

2-й тест не пройден: ошибка Метод «simulate» предназначен для запуска на 1узел.Вместо этого найдено 0.

    it('should call onSaveClick functions on button click', () => {
  baseProps.onSaveClick.mockClear();
  wrapper.setProps({
  closeModal :null
 });
 wrapper.find('.tran-button specify-body-continue').at(1).simulate('click')
 expect(baseProps.onSaveClick).toHaveBeenCalled();

здесь находится файл рендеринга js.

          onSaveClick = () => {
let json = Object.assign({}, this.props.selectedFormJSON);
for(let i in json.FORM_COLUMN) {
  json.FORM_COLUMN[i].IncludeInBody = this.state[json.FORM_COLUMN[i].Name];
}
this.props.updateSelectedFormJSON(json);
this.props.closeModal();

       render() {
return (
  <div className='specify-grid-modal'>
    <div className='fullmodal'> 
      <div className='fullmodal_title'>Specify Body</div>
      <div title="Close Window" className="add-custom-field-close" onClick={() => this.props.closeModal()}><FontAwesome name='xbutton' className='fa-times  preview-close' /></div>
    </div>
    <button className='tran-button specify-body-continue' onClick={() => {this.onSaveClick()}} >
      Continue
    </button>
    <div className='specify-body-wrapper'>
      {this.renderColumns()}
    </div>
  </div> 
)

}

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Селектор для поиска элемента выглядит неправильно.Это className.add-custom-field-close, но должно быть .add-custom-field-close

0 голосов
/ 14 февраля 2019

Спасибо за помощь

  it('should call  onSaveClick functions on button click', () => {
 baseProps.closeModal.mockClear();
  wrapper.setProps({
  updateSelectedFormJSON :null
 });
 wrapper.find('.add-custom-field-close').at(0).simulate('click')
expect(baseProps.closeModal).toHaveBeenCalled();
});
0 голосов
/ 14 февраля 2019

Ошибка означает, что нет совпадений для селектора className.add-custom-field-close.

className - имя реквизита и не должно включаться в селектор:

wrapper.find('.add-custom-field-close').at(0).simulate('click')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...