Sha*_*aun 1 ruby rspec ruby-on-rails capybara
我将 Capybara 2.4.3 与 Rspec-Rails 3.1.0、Ruby 2.1.5 和 Rails 4.1.8 一起使用。该测试仍然失败:
let(:attack_squad) { create :squad, user: attacker, name: 'Attack Squad' }
scenario 'attacker has available attack squad' do
visit '/account/battles/new'
save_and_open_page
expect(page).to have_select 'Squad', options: [attack_squad.name]
end
Run Code Online (Sandbox Code Playgroud)
使用save_and_open_page,我可以看到正在生成此 HTML:
<select id="battle_squad_id" name="battle[squad_id]">
<option value="194">Attack Squad</option>
<option value="192">Default Squad</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这是失败消息:
Battle Management attacker has available attack squad
Failure/Error: expect(page).to have_select 'Squad', options: [attack_squad.name]
expected to find select box "Squad" with options ["Attack Squad"] but there were no matches. Also found "Attack Squad Default Squad", which matched the selector but not all filters.
# ./spec/features/battle_spec.rb:31:in `block (2 levels) in <top (required)>'
# -e:1:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我遵循GitHub 上的水豚规范中演示的相同格式。如果我将期望更改为:
expect(page).to have_select 'Squad'
Run Code Online (Sandbox Code Playgroud)
它能够找到选择框并成功通过。如果我将options:值设置为数组以外的任何值,则会出现有关sort方法存在的错误。我缺少什么?
测试选择列表是否存在时,有两个与选项相关的过滤器:
测试失败,因为预期 HTML 不包含“默认小队”选项:
<select id="battle_squad_id" name="battle[squad_id]">
<option value="194">Attack Squad</option>
</select>
Run Code Online (Sandbox Code Playgroud)
您需要指定所有预期的选项:
let(:attack_squad) { create :squad, user: attacker, name: 'Attack Squad' }
let(:default_squad) { create :squad, user: attacker, name: 'Default Squad' }
scenario 'attacker has available attack squad' do
visit '/account/battles/new'
save_and_open_page
expect(page).to have_select 'Squad', options: [attack_squad.name, default_squad.name]
end
Run Code Online (Sandbox Code Playgroud)
或者,如果您只关心一个选项,请使用 :with_options 过滤器:
let(:attack_squad) { create :squad, user: attacker, name: 'Attack Squad' }
scenario 'attacker has available attack squad' do
visit '/account/battles/new'
save_and_open_page
expect(page).to have_select 'Squad', with_options: [attack_squad.name]
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3987 次 |
| 最近记录: |