你如何将黄瓜情景标记为待定

时间:2010-06-17 17:35:54

标签: ruby rspec cucumber

如何将黄瓜方案标记为待处理,以便它不会被视为已通过?

Scenario: Guest should not see edit link
# pending implementation

我不应该标记为待处理吗?

4 个答案:

答案 0 :(得分:58)

我发现@wip标签的问题在于它不会使您的测试套件变黄。它完全忽略了wip功能,你往往会忘记它们的存在。当场景被标记为@wip然后被遗忘时,这会让我的团队陷入困境。我希望有更好的解决方案。我最好的是添加这个自定义步骤:

Given /^PENDING/ do
  pending
end

不是将真实的功能标记为待处理,而是将其放入带有消息的阵容中,如下所示:

Given PENDING: we need client input

然后它显示如下:

(::) pending steps (::)

features/example.feature:15:in `Given PENDING: we need client input'

Pending停止了测试链,但它并没有阻止黄瓜在同一场景中唠叨任何未定义的步骤。此外,理想情况下,失败和待处理的功能会告诉您失败的方案的名称,但它们没有。

答案 1 :(得分:22)

另一种可能性是@wip标签(正在进行中)。标记为@wip的方案默认情况下不会运行,只是在您明确请求时才会运行。

@wip
Scenario: New product form should have some special field
  Given I still work on this feature

通过这种方式,您可以从自动构建中排除某些场景,以便在您处理该功能时不会中断。

答案 2 :(得分:21)

好的想出来了。

如果在任何步骤文件中找不到方案步骤,则会将其标记为待处理。

Scenario: New product form should have some special field
  Given joe is logged in as an user
  When on the new exercise page
  Then the select field should have some special field

甚至可以将待处理的步骤缩短。

When /^on the new exercise page$/ do
  pending # express the regexp above with the code you wish you had
end

答案 3 :(得分:1)

除了averell的答案,您还可以在运行黄瓜时排除场景标记。

如果@todo@wip是您要用于正在处理的方案或仅标记待处理方案的标记,请运行以下功能:

cucumber --tags ~@todo --tags ~@wip

如果您正在使用Guard,请执行以下操作:

guard 'cucumber', :notification => true, :all_on_start => true,
                      :cmd => "bundle exec cucumber", 
                      :cli => "--tags ~@todo --tags ~@wip" do
   watch(%r{^features/.+\.feature$})
   watch(%r{^features/support/.+$})  { 'features' }
   watch(%r{^features/step_definitions/(.+)_steps\.rb$}) do |m|
     Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
   end
end