Тест Rspec на наличие действия не работает - PullRequest
0 голосов
/ 12 августа 2010

Я работаю в Rspec of ROR .. Я пытаюсь проверить свои контроллеры с помощью RSpec.i у меня есть контроллер Users с такими функциями, как new, tags и т.д ..

я создал файл в spec / users_controller_spec.rb

и добавил контрольные примеры как.

require 'spec_helper'

describe UsersController do
  integrate_views

  it "should use UsersController" do
    controller.should be_an_instance_of(UsersController)
  end


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

    it "should have the title" do
      get 'new'
      response.should have_tag("title", "First app" )
    end
  end
end

, который получает пропуск.

Но когда я добавляю контрольный пример для тегов ... как

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

это приводит к ошибке как

F ...

1) 'UsersController GET' теги 'должны быть успешными' FAILED ожидаемый успех? чтобы вернуть истину, получил ложь

почему так происходит ?? Я очень плохо знаком с ROR и не могу найти причину, почему я получаю эту ошибку .. Как сделать этот пропуск. Также я попробовал Url

http://localhost:3000/users/tags, который выполняется для меня .. Но при тестировании с использованием $ spec spec / я получаю сообщение об ошибке ..

Ответы [ 2 ]

0 голосов
/ 08 сентября 2015

Вам необходимо добавить пользовательские маршруты, которые не входят в 7 стандартных маршрутов. Предполагая, что у вас есть resources :users в ваших маршрутах, вам нужно будет изменить его. Я также предполагаю, что ваш маршрут тегов является уникальным для отдельных пользователей.

resources :users do
  member do
    # creates /users/:user_id/tags
    get :tags
  end
end

И в вашем тесте RSpec вы бы назвали это как

describe '#tags' do
  user = create :user
  get :tags, user_id: user.id
end

Если маршрут не должен быть уникальным для пользователя, другой вариант - маршрут сбора, например:

resources :users do
  collection do
    # creates /users/tags
    get :tags
  end
end
0 голосов
/ 12 августа 2010

Ваш тест может быть неудачным по ряду причин.Требуется ли для маршрута идентификатор в хэше параметра?Перенаправляет ли действие контроллера?Выдает ли контроллер ошибку?

Вам нужно будет посмотреть на код контроллера / и / или routes.rb, чтобы выяснить причину сбоя.Обратите внимание на before фильтры в контроллере, которые могут вообще не позволить доступ к действию.

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