我正在使用此代码在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
答案 0 :(得分:0)
您的代码始终通过的原因是您的测试格式为:
lambda {}.should {}
相当于
lambda {}.should
因为should
忽略传递给它的任何块。这进一步相当于:
lambda {}.should be_truthy
总是成功,因为lambda {}
是Proc
,这是真的。
如果您希望should
执行proc以评估副作用(例如,引发错误,与其他对象交互),则只应将Proc
发送到should
有raise_error
和change
形式的匹配器。将块传递给expect
也是如此,这是当前语法。
在您的情况下,您只需执行当前lambda表达式中的代码,然后检查last_response
的值,如:
it '...' do
post ...
last_response.should be_ok
end
或更新的:
it '...' do
post ...
expect(last_response).to be_ok
end