如何在Rails中使用Cucumber产生负面情况?

时间:2009-10-10 18:36:42

标签: ruby-on-rails tdd cucumber

我有一个负面的方案来测试黄瓜。具体来说,我想确保当有人发布带有无效句柄的URL时,该站点会返回错误。

我的方案如下:

  

场景:创建一个句柄太短的人       当名为“弗雷德”的人用句柄“tooshort”更新       然后我应该得到500错误

我的步骤看起来像

  

当/ ^名为“(。)”的人用句柄“(。)”更新$ / do | name,handle |      访问“/ mobile / update?handle =#{udid}& name =#{name}”

当我运行场景时,由于来自

的错误,它永远不会到达那个部分
  

错误:无句柄(RuntimeError)

这是正确的,何时应该转500错误。

我只是不知道该如何将其作为否定测试。也许我应该使用不同于什么时候的东西?

1 个答案:

答案 0 :(得分:1)

如果您的步骤是正确的行为是引发错误,您使用lambda块来捕获此RuntimeError:

When /^person named "(.)" with handle "(.)" updates$/ do |name, handle| 
  lambda { 
    visit "/mobile/update?handle=#{udid}&name=#{name}"
  }.should raise_error("No Handle")
end

您可能需要调整raise_error部分,因为我不确切地知道您正在提出的错误类型

你可以像这样一个步骤(起点)

Then /^the save should not be successful$/ do
  response.should be_nil
end