这两行之间的区别

时间:2014-01-09 06:40:23

标签: cucumber capybara

当我们写这两个陈述时有什么区别

给出

/^I see "(.*?)" field$/ do |text|
      page.has_content?(text)

和 鉴于

/^I see "(.*?)" field$/ do |text|
      page.has_content?('text')

1 个答案:

答案 0 :(得分:0)

不同之处在于传递给has_content?方法的值。

在示例中:

Given /^I see "(.*?)" field$/ do |text|
  page.has_content?(text)

text是一个变量,它包含在Cucumber步骤中匹配的字符串 - 即引号之间的文本。

在第二个例子中:

Given /^I see "(.*?)" field$/ do |text|
  page.has_content?('text')

'text'是一个值为'text'的字符串。它永远是那个价值。

让我们假设您的功能包含以下步骤:

Given I see "my" field`

然后,您的第一个示例page.has_content?(text)将检查页面上是否有“my”文本。相反,您的第二个示例page.has_content?('text')将始终检查页面上是否包含文本“text”。基本上,您的第二个示例是对has_content?方法进行硬编码以始终查找特定文本(而不是使用Cucumber步骤中指定的文本)。