Не удается получить доступ к image_tag из вспомогательного модуля - PullRequest
1 голос
/ 19 июля 2011

Я хотел бы проверить следующую функцию вспомогательного модуля:

module UploadsHelper

  def custom_img_tag(upload, width, height, id)
     if width > Upload::MAX_CROP_WIDTH
       image_tag(upload.photo.url(:original), :id => "box", :width => Upload::MAX_CROP_WIDTH, :height => (height*Upload::MAX_CROP_WIDTH/width).to_i)
     else
       image_tag(upload.photo.url(:original), :id => "box")
     end
   end

end

Однако, когда я запускаю следующий тест:

describe UploadsController do
  include UploadsHelper
    describe "custom_img_tag(upload, width, height, id)" do
           before(:each) do
             @upload = Factory(:upload)
             geo = Paperclip::Geometry.from_file(@upload.photo.to_file(:original))
             @width   = geo.width
             @height  = geo.height
           end

       it "should return the original image tag for an image that is not wider than  MAX_CROP_WIDTH" do
         #custom_img_tag(@upload,@width, @heigth, "cropbox" ).should == '<img id="cropbox" width="500" height="375" src="/system/photos/10/original/avatar.jpg?1311044917" alt="Avatar" style="display: none;">'
       end
     end

Я получаю следующую ошибку:

Failure/Error: custom_img_tag(@upload,@width, @heigth, "cropbox" ).should == '<img id="cropbox" width="500" height="375" src="/system/photos/10/original/avatar.jpg?1311044917" alt="Avatar" style="display: none;">'
     NoMethodError:
       You have a nil object when you didn't expect it!

Почему я получаю эту ошибку и как я могу проверить этот метод?

Обновление: я добавил следующее в тестовый файл спецификации:

include ActionView::Helpers 

, который выдает следующееошибка:

NameError:
       undefined local variable or method `config' for #<RSpec

Как мне избавиться от этой ошибки и в чем причина?

Спасибо за любую помощь.

Ответы [ 2 ]

4 голосов
/ 28 июля 2011

Я также получил сообщение об ошибке при работе с Rails 3.1 RC

NameError:
   undefined local variable or method `config'

Некоторые источники трассировки Rails, и я обнаружил, что отсутствующие включают ActionView :: AssetPaths.

include ActionView::AssetPaths
include ActionView::Helpers::AssetTagHelper
0 голосов
/ 20 июля 2011

Ну, я не знаю, почему это так, но я думаю, что по какой-то причине ActionView :: Helpers не должны загружаться в этой спецификации.Попробуйте включить ActionView :: Helpers и посмотрите, исправит ли это ... Проблема (из того, что вы сообщаете) заключается в том, что когда вызывается ваш custom_img_tag метод, он не может вызвать image_tag по какой-то причине.1003 *

...