2015-06-18 12 views
2

我现在对编码和学习Ruby和Sinatra相当陌生。 我已经开始在终端的Rock paper scissors游戏上工作,我试图导出到网络并使用黄瓜来测试它的网络功能。cucumber test - 选择哪种语法来测试单选按钮选择?

我有一个网络功能与一个erb文件集成在一起,它足够有趣的工作在网络上,但我找不到实际上使它通过并显示它工作的黄瓜web步骤/语法。我想用正确的方式编写代码,以便在开始新功能之前让我的测试实际工作。

我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> 

我西纳特拉服务器包括以下

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

嘿@Guillame - 你能提供更多关于你的黄瓜步骤的信息吗?另外一个链接到您的回购与相关的代码也将非常有价值的,以帮助您解决这个 –

+0

喜山姆。当然。我目前使用的是标准的黄瓜网步骤,这里是[链接](https://github.com/GBouffard/rps-challenge) –

+0

所有的黄瓜测试都是绿色的,该回购的主分支......请参阅我的分析,了解如何以这种方式发布SO,以最大限度地提高人们帮助你的机会https://github.com/marcinwal/githubTree/wiki :-) –

回答

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",实际复选框标签中有一些mislabeling。

这是此类问题的,我会用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> 

,你需要如下,以确保您更新您的方案“选择“一个”单选按钮“而不是”检查它“

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" 
+0

非常感谢Sam。它绝对解决了我的问题:) –