我正在尝试解决我认为应该正常工作的测试中的错误。我很确定这是一个选择或水豚的错误,但我无法弄清楚原因。
我已经进入了水豚的来源,一切看起来都像是应该的。我不确定如何继续前进。
为了测试这个错误,我已经尽可能地将错误删除到一个小test application。请参阅下面的设置
bugs/show.html.erb
<select id="select-repo" class="repositories selectized" placeholder="Pick a repository...">
</select>
<select id="dropdown1">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
</select>
<select id="dropdown2">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
</select>
bug_spec.rb
feature 'bug' do
it "spec setup", js: true do
visit bug_path
find('div.selectize-input input', match: :first).set('exercism.io')
select 'Four', from: 'dropdown1' # this is not getting selected
select 'Four', from: 'dropdown2'
sleep 2
expect(page).to have_select('dropdown1', selected: 'Four') # testing that dropdown1 is being selected
end
end
# note that the javascript to initialize the selectize drop down is in application.js if you want to look at it go to the github application.
上面的测试访问了具有ajax selectize下拉菜单和两个普通select元素的页面。它试图将文本 - &#39; exercism.io&#39; - 在selectize下拉(通常我有另一行实际上模仿按Enter键,但错误发生在该行)然后它继续设置dropdown1和dropdown2的值。我已经进行了测试js: true
和sleep 2
以使ajax工作,因此您可以看到测试运行时实际发生的情况。
问题是无法设置dropdown1的值。当您运行测试并查看发生了什么时,您可以看到它找到了要设置的值,但它并没有实际设置它。它只是移动到下一个选择。
另一个奇怪的事情是如果我改变测试如下,测试通过。所以我很确定它与选择下拉的设置有关。
bug_spec.rb
feature 'bug' do
it "spec setup", js: true do
visit bug_path
select 'Four', from: 'dropdown1' # this is not getting selected
select 'Four', from: 'dropdown2'
find('div.selectize-input input', match: :first).set('exercism.io')
sleep 2
expect(page).to have_select('dropdown1', selected: 'Four') # testing that dropdown1 is being selected
end
end
我已经在demo application中复制了这个可以在github上找到的错误。
对不起,如果这很长,我还不确定如何说出这个问题。
请注意,此示例已被删除。在我的实际代码中,我使用代码,人们provided使用capybara和selectize。