0

我正在尝试使用 Rspec2 和 Rails3 开发视图组件。但是,我进行了以下观察,但我不明白发生了什么,以及如何解决这个问题。

在我的规范中,我定义:

  描述“main/index.html.erb”做
    它“在产品部分显示照片网址”做
      assign(:designs, [stub_model(Design, :name => "test", :photo => "photo_url")])

      使成为
      渲染的.应该包含(“photo_url”)
    结尾
  结尾

当我运行时:

rspec spec/view/main_spec.rb

我收到此错误:

    1) main/index.html.erb 在产品部分显示照片 url
       失败/错误:渲染
       动作视图::模板::错误:
         nil:NilClass 的未定义方法“照片”
       # ./app/views/main/_design.html.erb:3:in `_app_views_main__design_html_erb__2937334847274155273_2170841960__1566661024965846011'
       # ./app/views/main/index.html.erb:25:in `_app_views_main_index_html_erb__837234277009287876_2170861440__898201527838028543'
       # ./spec/views/main_spec.rb:7:in `block (2 levels) in '

但是,如果我只在我的部分中“访问”一个本地照片对象,那么一切都会过去。这是:

在 _design.html.erb 中:

        ---> 通过
        ---> 失败

在我看来,我将我的部分称为如下:

main.html.erb

      { :designs => @designs } %> 

社区是怎么想的?感谢您的帮助!

4

1 回答 1

0

问题已经解决了一段时间。

牢记“约定优于配置”很重要。在这种情况下,可以通过将规范文件完全命名为 /app 文件夹中的文件名并将 _spec.rb 放在末尾来使规范工作。因此, main 中索引 erb 的正确规范是

/spec/views/main/index.erb_spec.rb
于 2011-03-15T09:24:43.577 回答