2015-01-20 2 views
0

이 내 RSpec에 파일방법 RSpec에

it "assigns all tool_cvt_remote_focus as @tool_cvt_remote_focus" do 
     post "https://stackoverflow.com/users/sign_in", {:username => 'user', :password => "test"} 
    end 

레이크 노선

users/sessions#new {:locale=>"jp"} new_user_session_en GET /users/sign_in(.:format) 

을 POST 방식으로 콘솔에서 오류를 사용하여 유증에 로그인 할

Failure/Error: post "https://stackoverflow.com/users/sign_in", {:user => 123} 
ActionController::UrlGenerationError: 
    No route matches {:action=>"https://stackoverflow.com/users/sign_in", :controller=>"users", :user=>"123"} 

에 오류 GET 방법

Failure/Error: get "https://stackoverflow.com/users/sign_in", {:username => 'user', :password => "test"} 
+0

경로 파일은 어떻게 생겼습니까? – trosborn

+0

안녕하세요, 업데이트했습니다 – user3675188

+0

레이크 : 라우트가 GET 요청을 원하지만 테스트를 통해 POST 요청을하고 있다고합니다. 그게 당신 문제일까요? – trosborn

답변

0

그래, 일부 리서치를 사용했지만 Devise와 Rspec과 함께 몇 가지 조사를 해보고 테스트를 진행했습니다. 이 새로운 고안 도우미 방법을 사용하여 테스트를 리팩토링하는

require 'devise' 

RSpec.configure do |config| 
    config.include Devise::TestHelpers, :type => :controller 
end 

그리고 내가 가진을 : 내가해야 할 일을했을 무엇

내가 내 spec_helper 파일에이 기능을 추가해야한다고하려면 고안 헬퍼를 사용했다 그렇지 않으면 Devise가 라우터를 건너 뛰는 것에 대해 오류를 발생시킵니다.

require 'rails_helper' 

RSpec.describe Devise::SessionsController, :type => :controller do 
it "assigns all tool_cvt_remote_focus as @tool_cvt_remote_focus" do 
    @request.env["devise.mapping"] = Devise.mappings[:user] 
    user = User.create(
     username: 'user', 
     password: 'test' 
    ) 
    sign_in :user, user 
    end 
end 

이제 사용자를 만든 방법은 모범 사례가 아닙니다. 내가 온라인으로 말할 수있는 것에서부터 당신은 FactoryGirl을 사용하여 사용자를 생성하기로되어 있습니다. 왜냐하면 그것은 덜 부서지기 쉽기 때문입니다. 그러나 FactoryGirl을 사용한 적이 없으며 가능한 가장 단순한 솔루션을 제공하기 위해 필자는이를 포함시키지 않기로 결정했습니다.