Помогите отследить, почему не работает спецификация контроллера - PullRequest
6 голосов
/ 18 мая 2011

У меня есть user_controller_spec.rb, который терпит неудачу, и я не уверен, почему.

require 'spec_helper'

describe UsersController do

  describe "GET 'index'" do
    it "should be successful" do
      get 'index'
      response.should be_success
    end
  end


end

Когда я запускаю rspec, он говорит:

Failures:

  1) UsersController GET 'index' should be successful
     Failure/Error: response.should be_success
       expected success? to return true, got false
     # ./spec/controllers/users_controller_spec.rb:8

Finished in 0.17047 seconds
1 example, 1 failure

Переход на страницу / home / в браузере работает нормально.

Есть ли способ получить более подробную причину сбоя?

Примечание:

Это rails3, и я использую rspec.

У меня также есть драгоценный камень капибара, и поиск моего решения показывает, что единственная ссылка на капибару есть в моем файле gem и gem.lock.

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

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

get 'index'
puts response.body.inspect
puts response.status.inspect
...
response.should be_success

response.body будет содержать HTML-ответ ответа, поэтому вы должны быть в состоянии сказать, почему это не удачно (надеюсь, он будет иметь трассировку стека или будет перенаправлением или что-то в этом роде). Также имейте в виду, что перенаправление не является «успехом». Если я правильно помню, be_success проверяет, является ли код состояния HTTP одним из 200, перенаправления обычно составляют 302 или 304, поэтому они не учитываются. Если перенаправление предназначено, попробуйте response.should be_redirect.

1 голос
/ 19 мая 2011

Возможно, вы не просто визуализируете страницу, но перенаправляете.Чтобы проверить, что может быть не так, я бы сделал в своей спецификации что-то вроде:

response.should == 1

, чтобы увидеть, каков фактический ответ.Это даст вам хорошее представление о том, что происходит.

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