2012-07-01 3 views
1

분명히 나는 ​​어디서나 도움을 찾을 수없는 독특한 상황이 있습니다. 데이터베이스에 추가 모델을 만들려면 가입 절차를 연장하려고합니다.sign_up 조치를 취한 후 확장 기능을 테스트하는 방법은 무엇입니까?

  • 사용자 징후 이메일/비밀번호 최대
  • 시스템
  • 시스템이 생성하는 '사용자'모델을 만들고 (다른 모델 값과 함께) : 여기에 내가하고 싶은 것을의 기본 흐름은 '프로필'모델
  • 시스템의 가장 큰 도전은 내가 고안를 사용하고 있다는 점이다

  • 시스템은 '계정'모델을 생성하는 '회사'모델을 생성하고 난 볼 수 없습니다 m을 사용하여 Rspec을 사용하여이 기능을 테스트하는 방법을 찾아보십시오. 나는 다음과 같은 오류 얻을

    describe "New Users" do 
        describe "signing up" do 
        it "should create a new user" do 
         lambda do 
         post :sign_up, :user => Factory.attributes_for(:user) 
         response.should be_success 
         end.should change(User, :count).by(1) 
        end 
        end 
    end 
    

    : 다음 날의 빠른보기는 단순히 하지 작업 않는합니다 ('가입'방법을 테스트하기 위해 노력하고있다

    1) UsersController New Users signing up should create a new user 
    Failure/Error: post :sign_up, :user => Factory.attributes_for(:user) 
    ActionController::RoutingError: 
        No route matches {:user=>{:email=>"[email protected]", :password=>"secret", :password_confirmation=>"secret"}, :controller=>"users", :action=>"sign_up"} 
    # ./spec/controllers/users_controller_spec.rb:14:in `block (5 levels) in <top (required)>' 
    # ./spec/controllers/users_controller_spec.rb:13:in `block (4 levels) in <top (required)>' 
    

    유증 경로 구성을 내 사용자는 다음과 같은 경로를 가입 :

    new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"} 
    

    내가이 내 머리를 잡아 당겨 봤는데,이 지역에 어떤 도움을 찾을 수 없습니다 아마도 내가 접근하고있다. 잘못되었지만 사용자 계정 설정의 모든 측면 (예 : 회사 기본값, 프로필 설정 등). 초기 가입 양식에. 먼저 가입 절차를 테스트하는 방법을 알아 내야합니다.

    미리 감사드립니다.

  • +0

    아직 이에 대한 적절한 해결책은 ... 누구는 "sign_up"을 테스트하는 방법을 알 수없는 (NOT SIGN_IN) 방법 : 피곤했다 Devise의? 아마도 내가 원하는 것을 할 수있는 더 좋은 방법이있을 것이고 이것은 올바른 접근법이 아닙니다.? 나는 몇 가지 아이디어를 갖고 싶습니다. 다른 문제를 해결하는 방법에 대한 아이디어로 답하기 전에 내가하고 싶은 것을 이해하기 위해 내 설명을 읽으십시오. 감사합니다! – Luc

    답변

    1

    첫째 :

    it "should create a new user" do 
    expect { 
        post :create, user: FactoryGirl.attributes_for(:user) 
        response.should be_redirect 
    }.should change(User, :count).by(1) 
    end 
    
    :

    user_registration POST /users(.:format)     devise/registrations#create 
    

    은 아마 당신 같은이 구문을 통과 시도 할 수 있습니다

    UsersController < Devise::RegistrationsController 
    
    :

    편집 확인 후, 나는 아마도 경로 문제를 해결하는 방법을 알아낼, 나는 새로운 컨트롤러를 추가

    또한 거기에 sign_up 메소드가 추가되었습니다. 다음 노선.시험에 시험 전에

    devise_for :users 
    devise_scope :user do 
    post "/sign_up", :to => "devise/registrations#create" 
    end 
    

    그리고 마지막으로이 라인 : RB이 코드를 추가

    @request.env["devise.mapping"] = Devise.mappings[:user] 
    

    을하지만 검증에 문제가있다,하지만 난 내 응용 프로그램에 대한 생각 때문에 나는 단지 기존 시스템에 새로운 지사를 만들었습니다. 희망이 당신을 도울 수 있습니다. 그럼에도 불구하고, 나는이 방법이 상당히 해킹되거나 공통적이지 않다고 생각한다. 차라리 recommended 접근 방식을 사용합니다. FactoryGirl, 즉 link으로 사용자 의존성을 생성 할 수 있습니다. 희망이 당신을 도울 것입니다.

    BTW SRY가에서 :) 기호에 대한 실제적인 게시물에 대한 나는

    +0

    다른 게시물의 솔루션을 사용하고 있지만 기본적으로 사용중인 것과 동일한 접근 방법입니다. devise_scope 구성 (link : http://stackoverflow.com/questions/5765799/problem-with-post-create-in-my-devise-controller-rspec?rq=1). 팁 주셔서 감사합니다. 대답을하고 내 코드가 지금 정확히 어떻게 작동하고 있습니까? +1하고 싶습니다. – Luc

    0

    post :users 
    

    new_user_registration 경로 형태 (new 사용자 액션)이 아닌 create 사용자 동작을 포함하는 페이지로 리디렉션되지 않는다. 귀하의 경로와 비슷한 것을 찾으셔야합니다 :

    user_registration POST /users {:action => "create", :controller => "devise/registrations"} 
    

    rake routes을 확인하십시오.

    유증이 가입을위한 POST 방식을 사용하고 있기 때문에 당신이 인에 연결해야하는 모든 노선의
    +0

    아니요이 또한 작동하지 않습니다. 동일한 오류 메시지가 나타납니다 RoutingError : 경로가 일치하지 않습니다 ... – Luc

    관련 문제