检查黄瓜表格行中的值

时间:2011-05-19 04:14:53

标签: cucumber assertions

我正在尝试检查数据表中的值是否正确,所以我要做的就是选择所有行并检查对象名称和我正在检查的值的某个特定的tr_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(否则它将继续到最后的assert false

我该怎么做?

2 个答案:

答案 0 :(得分:1)

好吧,这似乎是一个肮脏的黑客,但我只是用一个变量来检查:

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

我不确定它是否适用于所有情况......但如果你有更好的解决方案,请发布它。谢谢!

答案 1 :(得分:0)

如果用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