rspec view stubs and partials

不打扰是莪最后的温柔 提交于 2020-01-02 05:43:07

问题


I'm testing a view with RSpec (2.12 on Rails 3.2.8). I'm using CanCan to conditionally display certain elements on a page. This requires a controller method 'current_user'. In some of my specs I've been able to stub out current_user, eg. controller.stub(:current_user).and_return(etc) or view.stub.etc .

This works for some of my specs. But I've got a couple where it's not working and I don't understand why.

The two specs where it's not working test a view, which calls down into a partial, and inside the partial I access 'current_user' as a method. The error is

undefined local variable or method `current_user' 

So I guess my question is how to stub methods correctly so that they can be accessed down inside partials.

How should it be done?


回答1:


A controller stub won't work because you're not testing a controller, you're testing a view. Just use a view stub instead:

view.stub(:current_user).and_return(etc)

This should work in a partial as well as in a view.

See: passing view spec that stubs a helper method



来源:https://stackoverflow.com/questions/14085037/rspec-view-stubs-and-partials

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!