Ron*_*nze 3 ruby unit-testing rspec authlogic
我一直试图这样做几天,但我无法弄明白.我的控制器中有以下代码:
@some_object = @current_user.some_method
Run Code Online (Sandbox Code Playgroud)
在我的规范中,我想在该方法上附加一个should_receive钩子,但我不能使它工作.我已经尝试了所有这些,但它们都不起作用:
assigns[:current_user].should_receive(:some_method).at_least(:once) # expected 1, got 0
User.should_receive(:some_method).at_least(:once) # expected 1, got 0
Run Code Online (Sandbox Code Playgroud)
如何正确测试这个?我在我的规范中运行它,登录正在运行:
setup :activate_authlogic
...
UserSession.create(users(:rune))
Run Code Online (Sandbox Code Playgroud)
谢谢!
一个例子来自Ruby on Rails教程.它不是@current_user直接设置和读取,而是定义了两个辅助方法:
def current_user=(user)
@current_user = user
end
def current_user
@current_user
end
Run Code Online (Sandbox Code Playgroud)
之后,他们使用以下方法在测试中访问此controller方法:
def test_sign_in(user)
controller.current_user = user
end
Run Code Online (Sandbox Code Playgroud)
使用此方法,您应该能够使用
controller.current_user.should_receive(:some_method).at_least(:once)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4752 次 |
| 最近记录: |