黄瓜测试 - 选择哪种语法来测试单选按钮选择?
cucumber test - Which syntax to choose to test a radio button selection?
我目前对编码和学习 Ruby 和 Sinatra 还很陌生。
我已经开始为我尝试导出到网络的终端开发剪刀石头布游戏,并使用黄瓜来测试其网络功能。
我有一个与 erb 文件集成的网络功能,有趣的是,它在网络上工作,但我找不到真正让它通过并显示它工作的黄瓜网络 steps/syntax。我想以正确的方式编写代码,因此希望我的测试能够在我继续使用新功能之前实际工作。
我的 options.erb 文件有这些行:
<form action="game_play">
<fieldset>
Which game do you want to play?<br><br>
<input type="radio" name="type" value="RPS" checked>Rock Paper Scissors<br>
<input type="radio" name="type" value="RPSSL">Rock Paper Scissors Spock Lizard
<br><br>
<input type="submit" value="PLAY!">
</fieldset>
</form>
我的 Sinatra 服务器包括以下内容
get '/game_play' do
@type = params[:type]
erb :play
end
而在play.erb页面中,石头剪刀布自动显示,但只有这个if语句
<% if @type == "RPSSL" %>
允许斯波克和蜥蜴出现。在 web 中,如果我 rackup 并继续 localhost:9292,它会起作用;只有 selecting RPSSL 允许在下一页看到 spock 和 lizard。
这些黄瓜测试
Scenario: Choosing a RPS type of game
Given I am on the options page
When I check "Rock Paper Scissors" within "type"
And I press "PLAY!"
Then I should see "Rock"
But I should not see "Spock"
Scenario: Choosing a RPSSL type of game
Given I am on the options page
When I check "Rock Paper Scissors Spock Lizard" within "type"
And I press "PLAY!"
Then I should see "Rock"
And I should see "Spock"
不工作。第一个实际上通过了,因为默认情况下会检查 RPS,但检查可能不是正确的黄瓜语法。我尝试使用 select、选择,甚至填写,但尽管在网上花了很长时间,还是找不到单选按钮的正确黄瓜语法。有人能帮忙吗?谢谢
好吧,有一件事是你真的应该删除websteps并编写自己的,但是让我们看一下支持检查websteps的代码:
https://github.com/GBouffard/rps-challenge/blob/master/features/step_definitions/web_steps.rb#L76
When /^(?:|I )check "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector|
with_scope(selector) do
check(field)
end
end
你也应该告诉我们你得到的实际错误,但我怀疑你的黄瓜步骤 When I check "Rock Paper Scissors Spock Lizard" within "type"
实际的复选框标签中有一些错误标签。
我会用 byebug 攻击这种问题,以检查是否抓取了正确的 HTML 元素...
好的,所以开始使用 byebug 并深入研究水豚源代码,我想我已经修复了它。如果你看一下关于如何使用 'radio buttons' 的水豚测试,这就是你在这里使用的,你需要这样的东西
<td><input type="radio" name="type" value="RPS" id="RPS" class="regular-checkbox" checked />
<label for="RPS">Rock Paper Scissors</label><br><br><img src="/images/rps_button.jpg"></td>
<td><input type="radio" name="type" value="RPSSL" id="RPSSL" class="regular-checkbox"/>
<label for="RPSSL">Rock Paper Scissors Lizard Spock<br><br><img src="/images/rpssl_button.jpg"></td>
并且您需要按如下方式更新您的场景,以确保您是 "choosing" "radio button" 而不是 "checking it"
Scenario: Choosing a RPS type of game
Given I am on the homepage
When I fill in "name" with "Guillaume"
And I press "START"
And I choose "Rock Paper Scissors"
And I press "PLAY!"
Then I should see "Rock"
But I should not see "Spock"
Scenario: Choosing a RPSSL type of game
Given I am on the options page
When I choose "Rock Paper Scissors Spock Lizard"
And I press "PLAY!"
Then I should see "Rock"
And I should see "Spock"
我目前对编码和学习 Ruby 和 Sinatra 还很陌生。 我已经开始为我尝试导出到网络的终端开发剪刀石头布游戏,并使用黄瓜来测试其网络功能。
我有一个与 erb 文件集成的网络功能,有趣的是,它在网络上工作,但我找不到真正让它通过并显示它工作的黄瓜网络 steps/syntax。我想以正确的方式编写代码,因此希望我的测试能够在我继续使用新功能之前实际工作。
我的 options.erb 文件有这些行:
<form action="game_play">
<fieldset>
Which game do you want to play?<br><br>
<input type="radio" name="type" value="RPS" checked>Rock Paper Scissors<br>
<input type="radio" name="type" value="RPSSL">Rock Paper Scissors Spock Lizard
<br><br>
<input type="submit" value="PLAY!">
</fieldset>
</form>
我的 Sinatra 服务器包括以下内容
get '/game_play' do
@type = params[:type]
erb :play
end
而在play.erb页面中,石头剪刀布自动显示,但只有这个if语句
<% if @type == "RPSSL" %>
允许斯波克和蜥蜴出现。在 web 中,如果我 rackup 并继续 localhost:9292,它会起作用;只有 selecting RPSSL 允许在下一页看到 spock 和 lizard。
这些黄瓜测试
Scenario: Choosing a RPS type of game
Given I am on the options page
When I check "Rock Paper Scissors" within "type"
And I press "PLAY!"
Then I should see "Rock"
But I should not see "Spock"
Scenario: Choosing a RPSSL type of game
Given I am on the options page
When I check "Rock Paper Scissors Spock Lizard" within "type"
And I press "PLAY!"
Then I should see "Rock"
And I should see "Spock"
不工作。第一个实际上通过了,因为默认情况下会检查 RPS,但检查可能不是正确的黄瓜语法。我尝试使用 select、选择,甚至填写,但尽管在网上花了很长时间,还是找不到单选按钮的正确黄瓜语法。有人能帮忙吗?谢谢
好吧,有一件事是你真的应该删除websteps并编写自己的,但是让我们看一下支持检查websteps的代码:
https://github.com/GBouffard/rps-challenge/blob/master/features/step_definitions/web_steps.rb#L76
When /^(?:|I )check "([^\"]*)"(?: within "([^\"]*)")?$/ do |field, selector|
with_scope(selector) do
check(field)
end
end
你也应该告诉我们你得到的实际错误,但我怀疑你的黄瓜步骤 When I check "Rock Paper Scissors Spock Lizard" within "type"
实际的复选框标签中有一些错误标签。
我会用 byebug 攻击这种问题,以检查是否抓取了正确的 HTML 元素...
好的,所以开始使用 byebug 并深入研究水豚源代码,我想我已经修复了它。如果你看一下关于如何使用 'radio buttons' 的水豚测试,这就是你在这里使用的,你需要这样的东西
<td><input type="radio" name="type" value="RPS" id="RPS" class="regular-checkbox" checked />
<label for="RPS">Rock Paper Scissors</label><br><br><img src="/images/rps_button.jpg"></td>
<td><input type="radio" name="type" value="RPSSL" id="RPSSL" class="regular-checkbox"/>
<label for="RPSSL">Rock Paper Scissors Lizard Spock<br><br><img src="/images/rpssl_button.jpg"></td>
并且您需要按如下方式更新您的场景,以确保您是 "choosing" "radio button" 而不是 "checking it"
Scenario: Choosing a RPS type of game
Given I am on the homepage
When I fill in "name" with "Guillaume"
And I press "START"
And I choose "Rock Paper Scissors"
And I press "PLAY!"
Then I should see "Rock"
But I should not see "Spock"
Scenario: Choosing a RPSSL type of game
Given I am on the options page
When I choose "Rock Paper Scissors Spock Lizard"
And I press "PLAY!"
Then I should see "Rock"
And I should see "Spock"