2

我正在使用 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

但是,我不知道如何让视图规范识别“当前”的含义,因为它是一个视图规范,它只测试视图,而不是请求。我知道这在控制器规范中会简单得多,但我认为我应该测试视图在其规范中的作用,并且将此测试移到控制器规范中会造成很多混乱。我要问的是:有没有办法告诉视图规范,也许在“之前”块中,当前页面是什么?另外,我在组织测试方面做得对吗?这个测试是否应该正确地存在于控制器规范中?

4

1 回答 1

2

没关系,我最终想通了。你必须存根 UrlHelper.current_page?如果传递的 url 选项与您要充当当前页面的页面匹配,则让它返回 true:

view.stub("current_page?".to_sym) {|options| url_for(options) == post_path(@post) }

我仍然不知道这是否是我应该进行 RSpec 测试的方式,但是,无论如何,这行得通。:P

于 2010-10-22T01:59:46.090 回答