2012-06-03 3 views
0

это странно, я бегу bundle exec guard на моем приложении rails, и я получаю длинный список ошибок для каждого отдельного действия в одном одиночном контейнере. И все ошибки в точности Teh же и не имеют никакого смысла, это то, что я получаю за все действия:RSpec дает ошибку при каждом действии в контроллере?

1) PriceProfilesController GET index assigns all price_profiles as @price_profiles 
    Failure/Error: Unable to find matching line from backtrace 
    ArgumentError: 
     wrong number of arguments (1 for 0) 
    # ./app/controllers/price_profiles_controller.rb:15:in `extend' 

    2) PriceProfilesController GET show assigns the requested price_profile as @price_profile 
    Failure/Error: Unable to find matching line from backtrace 
    ArgumentError: 
     wrong number of arguments (1 for 0) 
    # ./app/controllers/price_profiles_controller.rb:15:in `extend' 

... and so forth 

Любая идея, что происходит? PriceProfileContainer - это в значительной степени стандартный эшафот. Где я должен смотреть здесь. Файлы спецификаций автогенерируются эшафотом.

UPDATE ----

Вот функция удлиняет в мой код контроллера:

# GET /price_profiles/1/extend 
    def extend 
    @price_profile = PriceProfile.find(params[:id]) 
    @products = Product.all() 
    @locations = Location.all() 
    @price_profile_date_range = PriceProfileDateRange.new() 

    #respond_to do |format| 
    # format.html # extend.html.erb  
    #end 
    end 

Thats довольно много его.

+1

Я думаю, что вы будете нуждаться, чтобы разместить свой код контроллера. Основываясь на ошибке, кажется, что в вашем 'price_profiles_controller' вы вызываете метод extend в строке 15 и передаете ему один параметр, где он не ожидает ни одного. Но нужно будет убедиться, что код не забудьте. –

+0

@GeoffLanotte Привет, Пожалуйста, проверьте мое обновление – Ali

ответ

3

extend является методом ядра рубина, который позволяет добавлять методы в качестве модуля к объекту (вроде как включить)

Что-то (вероятно, можно сказать, глядя на оставшуюся части трассировки) пытается позвонить простирайтесь на экземпляр вашего контроллера, ожидая метода расширения ядра ruby, который принимает 1 аргумент), но вместо этого находит ваш метод расширения, который не принимает аргументов (и, конечно, делает что-то совершенно другое).

Легче всего было бы выбрать другое имя для вашего метода

+0

Ouch - но в качестве приложения его запуск довольно хорошо сам по себе в браузере. Я сделаю изменения и проверю. – Ali

+1

rspec расширяет ваши контроллеры, чтобы выполнить некоторые из своих тестов. –

+0

Бинго! Именно то, что проблема здесь, простое переименование и rspecs счастливы - большое спасибо, я был почти на своем уме. – Ali

Смежные вопросы