Глава 10.13, два модульных теста проваливаются без объяснения причин - PullRequest
0 голосов
/ 20 ноября 2010

Я видел эту проблему, перечисленную на getsatisfaction.com, но не понимаю обходной путь.

http://getsatisfaction.com/railstutorial/topics/listing_10_15_causes_user_validation_failure_running_rspec

Этот код по какой-то причине дает сбой в users_controller_spec.rb, и, возможно, причина в том, что фабрика не создает и неподходящего пользователя, и надлежащего пользователя, чтобы симулировать неподобающему пользователю доступ к соответствующей странице редактирования пользователя: (10,13)

describe "for signed-in users" do

      before(:each) do
        wrong_user = Factory(:user, :email => "user@example.net")
        test_sign_in(wrong_user)
      end

      it "should require matching users for 'edit'" do
        get :edit, :id => @user
        response.should redirect_to(root_path)
      end

      it "should require matching users for 'update'" do
        put :update, :id => @user, :user => {}
        response.should redirect_to(root_path)
      end

Я получаю следующие ошибки при запуске rspec:

Failures:
  1) UsersController authentication of edit/update pages for signed-in users should require matching users for 'edit'
     Failure/Error: get :edit, :id => @user
     No route matches {:id=>nil, :controller=>"users", :action=>"edit"}
     # ./spec/controllers/users_controller_spec.rb:223:in `block (4 levels) in <top (required)>'

  2) UsersController authentication of edit/update pages for signed-in users should require matching users for 'update'
     Failure/Error: put :update, :id => @user, :user => {}
     No route matches {:id=>nil, :user=>{}, :controller=>"users", :action=>"update"}
     # ./spec/controllers/users_controller_spec.rb:228:in `block (4 levels) in <top (required)>'

1 Ответ

0 голосов
/ 20 ноября 2010

Ну, это дает объяснение: он пытается построить маршруты без какого-либо id. Вы уверены, что @user содержит фактического пользователя?

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