Использование Mocha в функциональном тесте и получение ActionView :: Template :: Error: неопределенный метод `model_name 'для NilClass: Class - PullRequest
0 голосов
/ 31 января 2012

У меня есть очень простое действие контроллера, которое загружает переменную экземпляра с помощью вызова для ограничения следующим образом:

  def index
    @questions = Question.limit(10)
  end

У меня очень простой функциональный тест с использованием musta, test / unit и Mocha.

  should 'limit questions returned' do
    Question.expects(:limit)    
    get :index
  end

Я получаю следующую ошибку только тогда, когда проверяю макет.До этого момента все работало в браузере и во всех других моих тестах.Если я поставлю фиктивный вызов после вызова get: index, он потерпит неудачу, как я и ожидал.

test: WelcomeController should limit questions returned. (WelcomeControllerTest):ActionView::Template::Error: undefined method `model_name' for NilClass:Class
app/views/welcome/index.html.erb:7:in `_app_views_welcome_index_html_erb__4244593822102250638_70180558144100'
test/functional/welcome_controller_test.rb:14:in `block in <class:WelcomeControllerTest>'

Как я уже говорил.Все работает через мои интеграционные тесты, и я вижу все это в браузере.Я получаю сообщение об ошибке только при вводе строки «Question.expected (: limit)».Я надеюсь, что это просто глупость, по которой я скучаю.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 31 января 2012

Мне удалось это исправить, изменив код моего вида с этого:

    <%= render @questions %>

<% if @questions.count >= 10 %>
    <h3><%= link_to 'See more ->', questions_path %></h3>
<% end %>

к этому:

<% if @questions %>
<%= render @questions %>

<% if @questions.count >= 10 %>
    <h3><%= link_to 'See more ->', questions_path %></h3>
<% end %>
<% end %>

В любом случае, вероятно, я должен иметь такой код на случай, если из действия моего контроллера ничего не будет возвращено.

Итак, как оказалось, это было что-то глупое, что я делал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...