黄瓜测试 - 选择哪种语法来测试单选按钮选择?

时间:2015-06-18 15:49:47

标签: ruby radio-button sinatra cucumber

目前我对编写和学习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但检查可能不是正确的黄瓜语法。我尝试选择,选择,甚至填写,但尽管在网上花了很长时间,找不到合适的黄瓜语法的单选按钮。有人能帮忙吗?感谢。

1 个答案:

答案 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"