如何将 update_attributes 设置为 false 来存根“current_user”?
这是一个纯粹的语法问题。我对 RSpec 很陌生。
我基本上想在这个错误行的行上写一些东西:
controller.stub!(:current_user(:update_attributes => false))
有人知道如何正确编写它吗?
RSpec 的默认值如下所示:
User.stub(:find) { mock_user(:update_attributes => false) }
This is a pure syntactical question. I'm very new to RSpec.
I basically want to write something on the lines of this erroring line :
controller.stub!(:current_user(:update_attributes => false))
Anyone know how to properly write that?
RSpec's default looks like this :
User.stub(:find) { mock_user(:update_attributes => false) }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这看起来像
stub_chain
的情况:controller.stub_chain(:current_user,:update_attributes).and_return(false)
请注意,这只是替换列表中的方法它们发生的顺序,因此为了使其有意义,您的控制器中将有一个
current_user.update_attributes
。如果您有类似@user.update_attributes
的内容,我认为它不会起作用。有关 APIDock 的更多信息
This looks like a case for
stub_chain
:controller.stub_chain(:current_user,:update_attributes).and_return(false)
Note that this is just going to replace methods in the list in the order they occur, so for this to make sense you'll have a
current_user.update_attributes
in your controller. If you have something like@user.update_attributes
, I don't think it will work.More info on APIDock
我只是盲目地尝试了一千种变化,最后终于通过了:
但是说真的,这有什么意义吗?就这样过去了 :D
I just blindly played around with a thousand variations and finally got it to pass with this :
But seriously, does that even make any sense? It's passing :D
对于 RSpec 3.0 和 rspec-mocks ,执行此操作的方法是使用
allow.
With RSpec 3.0 and rspec-mocks the way to do this is to use
allow
.这并没有具体解决 update_attributes 问题,但以下内容对我有用。假设您的 current_user 助手位于 ApplicationController 中:
This does not address update_attributes specifically, but the following worked for me. Assuming your current_user helper lives in ApplicationController: