1

我有一个消极的场景要用 Cucumber 进行测试。具体来说,我想确保当有人发布带有无效句柄的 URL 时,该站点会返回错误。

我的场景如下:

场景:创建一个句柄太短的人当名为“Fred”的人使用句柄“tooshort”更新时,我应该得到一个 500 错误

我的步骤看起来像

当 /^person 命名为 "(. )" 并带有句柄 "(. )" 更新$/ 时,请执行 |name, handle| 访问“/mobile/update?handle=#{udid}&name=#{name}”

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

错误:无句柄 (RuntimeError)

这是正确的,什么时候应该会出现 500 错误。

我只是不知道如何将“当”作为否定测试来表达。也许我应该使用与何时不同的东西?

4

1 回答 1

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 步骤(起点)

Then /^the save should not be successful$/ do
  response.should be_nil
end
于 2009-10-11T08:27:40.210 回答