检查黄瓜表格行中的值

问题描述:

我想检查数据表中的值是否正确,因此我所做的是选择所有行并检查是否某个tr has_content对象名称和值我是检查。问题是,我似乎无法在黄瓜做return检查黄瓜表格行中的值

Then /^I should see "([^"]*)" beside "([^"]*)"$/ do |value, name| 
    all("tr").each do |tr| 
    if tr.has_content?(value) && tr.has_content?(name) 
     assert true and return 
    end 
    end 
    assert false 
end 

我想类似的东西。当我找到一个有两个值的行时,这意味着它是正确的,我应该停止循环,并返回true(否则它将继续到最后)

我该如何去解决这个问题?

以及它似乎是一个肮脏的黑客,但我只是用一个变量来检查:

Then /^I should see "([^"]*)" beside "([^"]*)"$/ do |value, name| 
    has_value_and_name = false 
    all("tr").each do |tr| 
    if tr.has_content?(value) && tr.has_content?(name) 
     has_value_and_name = true 
    end 
    end 
    assert has_value_and_name 
end 

我不知道这是否会在所有情况下工作......但如果你有更好的解决办法,请张贴它也。谢谢!

+0

,而不是旧的单元测试什么“断言”你应该使用。应该是rspec/cucumber的一部分。看到我的回答下面 – 2011-05-21 00:15:28

+0

我不认为主张vs应该在这一点上,因为这是一个偏好的问题:) – corroded 2011-05-24 10:25:15

那么,如果它驾驶的浏览器的Watir你可以做

matchvalue = regex.new(value) 
matchname = regex.new(name) 

browser.row(:text => matchvalue, :text => matchname).exists?.should = true 

在你的情况下这样做

Then /^I should see "([^"]*)" beside "([^"]*)"$/ do |value, name| 
    result = false 
    all("tr").each do |tr| 
    if tr.has_content?(value) && tr.has_content?(name) 
     result = true 
     break 
    end 
    end 
    result.should = true 
end 
+0

做一个在黄瓜步骤返回混乱了我的cukes。它说不应该有回报或什么 – corroded 2011-05-22 06:22:34

+0

“或什么”?如果你确实需要帮助,那么确切的错误信息会很有帮助。我想可以总是省略返回,它会比较慢,因为它必须处理所有行,否则应该起作用。如果你打算使用黄瓜进行结果报告等,请停止使用断言并开始使用。应该匹配器 – 2011-05-23 16:35:48

+0

对不起,我做了一个工作,因为我的肮脏,所以我没有再使用它。无论如何,我试图再次重现错误,这里是我得到与上述代码:意外的回报(LocalJumpError) – corroded 2011-05-23 16:52:29