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

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

我的场景看起来像:

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

我的步骤看起来像

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

当我运行场景时,由于来自When的错误,它永远不会到达THEN部分

错误:无句柄(RuntimeError)

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

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

如果您的步骤是正确的行为是引发错误,您使用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步骤(起点)

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