ruby-on-rails – 如何在AuthLogic控制器规范中使用模拟模型?
发布时间:2020-12-17 02:50:19 所属栏目:百科 来源:网络整理
导读:我试图在不使用灯具的情况下为控制器编写规格(而不是使用模拟模型).该控制器要求用户登录,我在 author’s recommendations之后使用 AuthLogic. describe UsersController do def mock_user(stubs={}) @mock_user ||= mock_model(User,stubs) end context 'wh
我试图在不使用灯具的情况下为控制器编写规格(而不是使用模拟模型).该控制器要求用户登录,我在
author’s recommendations之后使用
AuthLogic.
describe UsersController do def mock_user(stubs={}) @mock_user ||= mock_model(User,stubs) end context 'when logged in' do before { activate_authlogic } it "exposes the logged-in user as @user in response to GET (show)" do UserSession.create(mock_user) ... end ... end ... end 这些示例都在UserSession.create(…)行中失败,报告的效果如下: Mock 'User_1005' received unexpected message :changed? with (no args) 我不知道如何解决这个问题;嘲笑:改变了吗? =>假适当吗? 解决方法
Iain发布了一个
solution to using mock objects with AuthLogic.要重新说明,以下助手进入spec_helpers.rb:
def current_user(stubs = {}) @current_user ||= mock_model(User,stubs) end def user_session(stubs = {},user_stubs = {}) @current_user_session ||= mock_model(UserSession,{:user => current_user(user_stubs)}.merge(stubs)) end def login(session_stubs = {},user_stubs = {}) UserSession.stub!(:find).and_return(user_session(session_stubs,user_stubs)) end def logout @user_session = nil end 我已将其纳入我的规格中,我发现它完全符合我的希望.我有工作的控制器规范,为登录用户部署模拟模型,所以现在,当我向User添加一个字段时,它们并没有全部中断. Iain在规范中实现这一点的例子如下: describe SecretsController do before { login } it "should be very very secret!" end 附:我讨厌回答我自己的问题,但这是我正在寻找的答案;我只是没有及早发现它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |