Функциональные тесты, не распознающие какие-либо маршруты - PullRequest
2 голосов
/ 07 июня 2011

Я пытаюсь написать очень простой функциональный тест для одного из моих контроллеров, но проблема в том, что он не распознает ни один из моих маршрутов.Все они работают в приложении через HTTP и могут быть видны на рейковых маршрутах.

На самом деле я даже добавил

puts ActionController::Routing::Routes.inspect

, и он выдал все мои маршруты до ошибки.

Вот тест:

require 'test_helper'

class UsersControllerTest < ActionController::TestCase
  test "should get signup" do
    get :new
    assert_response :success
    assert_not_nil assigns(:users)
  end
end

Ошибка:

1) Error:
test_should_get_signup(UsersControllerTest):
ActionController::RoutingError: No route matches {:controller=>"users", :action=>"new"}
/test/functional/users_controller_test.rb:5:in `test_should_get_signup'

1 tests, 0 assertions, 0 failures, 1 errors
rake aborted!
Command failed with status (1): [/Users/projectzebra/.rvm/rubies/ruby-1.8.7...]

(See full trace by running task with --trace)

Маршруты рейка:

               POST   /users(.:format)                       {:controller=>"users", :action=>"create"}
new_user_en_gb GET    /users/new(.:format)                   {:controller=>"users", :action=>"new"}

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Попробуйте добавить функциональный тест для самого маршрута, посмотрите, прошел ли он, и идите оттуда.

Что-то вроде:

test "should route to new user" do
  assert_routing '/users/new', { :controller => "users", :action => "new" }
end
0 голосов
/ 11 июля 2013

Это была проблема в моем "путешествии". Они сделали маршруты более строгими в путешествии 1.0.4, которые отображаются только в «тестовой» среде. Это хорошо для "разработки" и "производства".

** Убедитесь, что вы используете точно такие же параметры, как указано в маршрутах **

Либо добавьте:

get :index, :locale => "en"

или в вашем обновлении Gemfile:

gem 'journey', '1.0.3'
...