目前我对编写和学习Ruby和Sinatra相当陌生。 我已经开始为终端上的岩石剪刀游戏工作,我正在尝试导出到网络,并使用黄瓜来测试其网络功能。
我有一个与erb文件集成的网络功能,它在网上很有趣,但我找不到实际通过它的黄瓜网步骤/语法并显示它有效。我想以正确的方式编码,以便在我开始使用新功能之前,我希望我的测试能够真正起作用。
我的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" %>
允许出现spock和lizard。在网络上,如果我机架并继续使用localhost:9292,它可以工作;只选择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但检查可能不是正确的黄瓜语法。我尝试选择,选择,甚至填写,但尽管在网上花了很长时间,找不到合适的黄瓜语法的单选按钮。有人能帮忙吗?感谢。
答案 0 :(得分:1)
好的,有一点是你应该删除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进入并在深水源深处潜水,我想我已经修好了。如果看一下如何使用“单选按钮”的水豚测试。这就是你在这里使用的,你需要这样的东西
<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>
您需要按照以下方式更新您的方案,以确保您选择&#34; a&#34;单选按钮&#34;而不是&#34;检查它&#34;
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"