No route matches dla każdego testu

Dopiero zaczynam z testami, więć problem pewnie jest banalny, mam prosty test

[code=ruby]require ‘test_helper’

class UsersControllerTest < ActionController::TestCase

def setup
@controller = UsersController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end

test “register_page” do
get :register
assert_response :success
end

end[/code]
Po odpaleniu przez ruby functional/users_controller_test.rb dostaję

[code]Loaded suite functional/users_controller_test
Started
.E
Finished in 0.105232 seconds.

  1. Error:
    test_register_page(UsersControllerTest):
    ActionController::RoutingError: No route matches {:controller=>“users”, :action=>“register”}
    functional/users_controller_test.rb:14:in `test_register_page’

2 tests, 1 assertions, 0 failures, 1 errors[/code]
mimo że akcja i kontroler istnieją. Podobnie dla innych testów

A może coś nie tak w config/routes.rb ?

Poniekąd :slight_smile: ale nie do końca. Używam pluginu translate_routes do lokalizacji URLi, wlacza sie go w routes za pomocą
ActionController::Routing::Translator.translate_from_file(‘config/locales’,‘i18n-routes.yml’)

Co do testów to zapomniałem dodać lokalizacji do parametrów get np.

get :register, :locale => "pl"

Musi być string, nie działa z symbolem

Jest nadal mały problem z tym pluginem, nie chciał bym się go pozbywać bo mimo wszystko jest całkiem wygodny. Jeśli wejde do konsoli przez script/console i wpisze np. app czy app.get ‘uzytkownik/rejestracja’ dostaje zawsze

NameError: undefined method `new_answer_path' for class `ActionController::Integration::Session' from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:98:in `public' from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:98:in `reset!' from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:98:in `module_eval' from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:98:in `reset!' from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:69:in `initialize' from /home/artur/.gem/ruby/1.8/gems/rails-2.3.4/lib/console_app.rb:19:in `new' from /home/artur/.gem/ruby/1.8/gems/rails-2.3.4/lib/console_app.rb:19:in `new_session' from /home/artur/.gem/ruby/1.8/gems/rails-2.3.4/lib/console_app.rb:11:in `app' from (irb):20
answer_path to pierwsza alfabetycznie ścieżka zdefiniowana w routes

answers_pl GET /odpowiedz(.:format) {:locale=>"pl", :controller=>"answers", :action=>"index"} POST /odpowiedz(.:format) {:locale=>"pl", :controller=>"answers", :action=>"create"} new_answer_pl GET /odpowiedz/utworz(.:format) {:locale=>"pl", :controller=>"answers", :action=>"new"} edit_answer_pl GET /odpowiedz/:id/edycja(.:format) {:locale=>"pl", :controller=>"answers", :action=>"edit"} answer_pl GET /odpowiedz/:id(.:format) {:locale=>"pl", :controller=>"answers", :action=>"show"} PUT /odpowiedz/:id(.:format) {:locale=>"pl", :controller=>"answers", :action=>"update"}
Polecenie I18n.locale z konsoli daje w odpowiedzi :pl. Po wyłączeniu pluginu nie ma tych błędów

Przy okazji, czy dalej trzeba dodawać to do testów, bo czasem tą linie spotykam

class UsersController; def rescue_action(e) raise e end; end

Mam właśnie podobny problem. Mam świeżą aplikacja na ror 3.0.3 i taki oto test kontrolera:

[code]require ‘spec_helper’

describe TasksController do

describe “GET #index” do
before(:each) do
@tasks = [mock_model(Task), mock_model(Task)]
Task.stub!(:all).and_return(@tasks)
get :index
end
it { assigns(:tasks).should eq(@tasks) }
it { assert_template(“index”)}
end

describe “GET #new” do
before(:each) do
get :new
end

it { assert_template("new")}

end

end[/code]
Niestety wywala się, gdy próbuje zrobić get :index:

1) TasksController GET #new Failure/Error: get :new ActionController::RoutingError: No route matches {:controller=>"tasks", :action=>"new"}
Zarówno ja przez przeglądarkę jak i cucumber w swoich testach wchodzimy w tę akcję jak bułka w masło. rake routes też mówi że jest:

tasks GET /tasks(.:format) {:action=>"index", :controller=>"tasks"} POST /tasks(.:format) {:action=>"create", :controller=>"tasks"} new_task GET /tasks/new(.:format) {:action=>"new", :controller=>"tasks"} edit_task GET /tasks/:id/edit(.:format) {:action=>"edit", :controller=>"tasks"} task GET /tasks/:id(.:format) {:action=>"show", :controller=>"tasks"} PUT /tasks/:id(.:format) {:action=>"update", :controller=>"tasks"} DELETE /tasks/:id(.:format) {:action=>"destroy", :controller=>"tasks"} root /(.:format) {:controller=>"tasks", :action=>"index"}
a sam plik routes.rb wygląda tak:

[code]Timetracker::Application.routes.draw do

resources :tasks, :expect => [:edit, :update]

root :to => “tasks#index”

end[/code]
Pogoglowałem nad tym i cały czas nie mam żadnego punktu zachaczenia. Może ktoś miał podobny problem i może pomóc?