我正在使用Rails 3学习RSpec 2,虽然到目前为止它一直很顺利,但我在测试视图中的帮助程序link_to_unless_current时遇到了问题。我一直试图做的是使用视图规范中的一个简单的assert_select来确定是否在以下局部视图(HAML)中生成了一个链接:
%article.post{ :id => "post-#{post.id}" }
%header.post-title
%h2= link_to_unless_current post.title, post
.post-content= raw post.body
但是,我不知道如何让视图规范识别“当前”意味着什么,因为它是一个视图规范,它只测试视图,而不是请求。我知道这在控制器规范中要简单得多,但我认为我应该测试一个视图在其规范中的作用,并且将这个测试移出到控制器规范会让人感到困惑。我要问的是:有没有办法告诉视图规范,也许在“之前”块中,当前页面是什么?另外,我在组织测试方面做得对吗?该测试是否应该正确地存在于控制器规范中?
答案 0 :(得分:2)
没关系,我最终想通了。你必须存根UrlHelper.current_page?如果传递的url选项与您想要充当当前页面的页面匹配,则返回true:
view.stub("current_page?".to_sym) {|options| url_for(options) == post_path(@post) }
我仍然不知道这是否是我应该进行RSpec测试的方式,但是,无论如何,这都有效。 :P