2017-02-15 7 views
1

Я следующий тест для React приложения:scryRenderedComponentsWithType возвращает пустой массив

it('has 7 NavBarItems',() => { 
    const component = ReactTestUtils.renderIntoDocument(<App />); 
    const navBarItems = ReactTestUtils.scryRenderedComponentsWithType(
     component, 
     NavBarItem); 

    expect(navBarItems.length).toEqual(7); 
}); 

Когда App компонент оказывается в не тестовой среде, NavBar с 7 дочерних компонентов NavBarItem создается в верхней экрана, чтобы облегчить навигацию по всему приложению.

NavBarItem класс выглядит следующим образом:

class NavBarItem extends Component { 
    render() { 
     return (
      <div id={this.props.id} 
       className={"NavBarItem" + (this.props.active ? " active" : "") + (this.props.visible ? "" : " hidden")} 
       onClick={e => this.props.navBarClick(e.target.id)}> 
       {this.props.title} 
      </div> 
     ); 
    } 
} 

Однако тест всегда терпит неудачу, потому что scryRenderedComponentsWithType всегда возвращает пустой массив, даже когда я помещал добавить вызовы jest.dontMock как для App и файла, из которого NavBarItem импортируется. Я использую это неправильно или просто хочу?

+1

Вы все это понимаете? – Srmuhs

+0

Примечание: scryRenderedComponentsWithType НЕ работает с новыми компонентами без состояния, введенными в реакции v0.14. – Larrydx

ответ

0
  1. Убедитесь, что вы импортировали как react и react-dom к тесту, а также App и NavBarItem компоненты. Если мы не можем увидеть весь файл, вам будет труднее помочь.

... Если это не помогло: Вы пробовали другие методы? Нравится:

scryRenderedDOMComponentsWithClass( component, NavBarItem)