Я изначально использовал элемент Select, делал поиск и проверял дочерние элементы, чтобы увидеть, содержат ли опции ожидаемые значения. Но с тех пор я перешел на использование элемента Input с списком данных, чтобы разрешить ввод текста в произвольной форме, а также выбор параметров, однако я не вижу, как проверить то же самое.
Что я хочу проверить, так это то, что элемент ввода отрисован, а список данных содержит ожидаемые значения.
Код моей реакции
<input type="text" list="categories" ref={this.categoryInput} className="Modal-Comment" name="CategoryInput" value={this.state.enteredCategory} onChange={ (e) => this.handleCategoryChanged(e)}/>
<datalist id="categories">
{this.groupOptions.map(o => this.MakeOption(o, this.state.enteredCategory))}
</datalist>
и мой тестовый код Enyzme, который ранее проверял элемент select
const categorySelect = wrapper.find('select').find('[name="CategoryInput"]');
expect(categorySelect.exists()).toEqual(true);
expect(categorySelect.children().filterWhere(x => x.text() === 'Expected option 1').length).toEqual(1);
expect(categorySelect.children().filterWhere(x => x.text() === 'Expected option 2').length).toEqual(1);
Я понимаю, что должен изменить find (), чтобы искать тип ввода, что нормально, но тогда я не знаю, как искать сгенерированные опции в списке данных. Приведенный выше тестовый код возвращает 0 соответствующих элементов, я полагаю, потому что список данных не является дочерним элементом ввода. В каком случае, как мне это проверить?