我需要在office-ui-fabric Dropdown(使用spyOn和expect(回调).toHaveBeenCalled())对提供给'onChanged'事件的回调进行单元测试。问题是我不知道如何触发此事件?我试着看看DOM但是没有我可以触发的html选择标签。我还尝试更改所选项目的状态(在下拉组件上),但我得到一个错误,Jest告诉我我只能更改根元素的状态(我尝试浅,mount并潜入下拉组件)。有没有一种简单的方法可以实现这一目标?
我正在使用Jest with Enzyme和这段代码:
const div = document.createElement('div');
ReactDOM.render(<Dropdown
label='My label'
placeHolder='My placeholder'
options={[
{ key: 'A', text: 'Option a' },
{ key: 'B', text: 'Option b' },
]}
onChanged={() => { return; }} />, div);
const dropdownContainer = div.querySelector('.ms-Dropdown') as HTMLElement;
ReactTestUtils.Simulate.click(dropdownContainer);
它输出这个html:
<div class="ms-Dropdown-container">
<label class="ms-Label ms-Dropdown-label root-37" id="Dropdown0-label" for="Dropdown0">My label</label>
<div data-is-focusable="true" id="Dropdown0" tabindex="0" aria-expanded="true" role="listbox" aria-autocomplete="none" aria-live="off" aria-describedby="Dropdown0-option" class="ms-Dropdown root_f16b4a0d is-open" aria-owns="Dropdown0-list">
<span id="Dropdown0-option" class="ms-Dropdown-title title_f16b4a0d ms-Dropdown-titleIsPlaceHolder titleIsPlaceHolder_f16b4a0d" aria-atomic="true" role="listbox" aria-readonly="true">
<span>My placeholder</span>
</span>
<span class="ms-Dropdown-caretDownWrapper caretDownWrapper_f16b4a0d">
<i data-icon-name="ChevronDown" class="ms-Dropdown-caretDown caretDown_f16b4a0d root-39" role="presentation" aria-hidden="true"></i>
</span>
</div>
<span class="ms-Layer"/>
</div>
没有“.ms-Dropdown-item”
答案 0 :(得分:0)
您应该能够使用标识为querySelector
的{{1}},然后ms-Dropdown
。在现有的ReactTestUtils.Simulate.click
单元测试中有这样的例子:
Dropdown