Padrino rspec控制器测试始终为绿色

时间:2014-06-05 13:05:21

标签: ruby rspec sinatra padrino

我正在使用此代码在padrino上使用rspec测试我的控制器:

https://gist.github.com/anonymous/8d0df4c189e99c7cb7ea

如果我运行测试,那么每一件事情都会很好,所有的测试都是绿色的。 问题是那些测试必须失败!前一个块上的sign_in_admin不允许用户登录并进行后期调用,如果我更改了行

last_response.should_not be_ok

last_response.should be_ok

测试总是绿色..... 我不知道自己哪里错了。

这是我的spec_helper.rb

https://gist.github.com/anonymous/6442d02654cbee2cf3b5

1 个答案:

答案 0 :(得分:0)

您的代码始终通过的原因是您的测试格式为:

lambda {}.should {}

相当于

lambda {}.should

因为should忽略传递给它的任何块。这进一步相当于:

lambda {}.should be_truthy

总是成功,因为lambda {}Proc,这是真的。

如果您希望should执行proc以评估副作用(例如,引发错误,与其他对象交互),则只应将Proc发送到shouldraise_errorchange形式的匹配器。将块传递给expect也是如此,这是当前语法。

在您的情况下,您只需执行当前lambda表达式中的代码,然后检查last_response的值,如:

it '...' do
  post ...
  last_response.should be_ok
end

或更新的:

it '...' do
  post ...
  expect(last_response).to be_ok
end