Я пытался протестировать компонент Callout в моем реактивном проекте.
Для упрощения ниже приведен компонент React render:
<div className="UserInfoDiv">
<div ref={this.menuButtonElement}>
<ActionButton id="toggleCallout"
onClick={changeIsCallOutVisibleProptoTrue}
text="Show Callout" />
</div>
<Callout
className="calloutClass1"
target={this.menuButtonElement.current}
hidden={!this.props.isCalloutVisible}>
<div id="callOutContainer">
<span>Need to test items here.<span>
<button className="clickForSomeAction">Simulate Click on this</button>
</div>
</Callout>
</div>
В пользовательском интерфейсе это работает абсолютно нормально.Для тестирования в jest я попробовал следующее:
userMenu = mount(<UserInfoDivComponent {...props} />);
UserInfoDiv.find("button#toggleCallout").simulate('click');
expect(changeIsCallOutVisibleProptoTrue.mock.calls.length).toBe(1);
userMenu.setProps({isCalloutVisible: true });
// Following only gives html(included UserInfoDiv,toggleCallout) `without html from callout`:
console.log(userMenu.html());
Мне нужна помощь, Как протестировать следующие сценарии?
- Выноска видна?
- Найти
.clickForSomeAction
кнопка внутри Callout.calloutClass1
и имитация щелчка
Есть аналогичный компонент (например, DropDown, Contextual Menu) из office-fabric-ui, который отображает HTML в документе, а не в текущем компоненте HTML.