요청 사양에 대한 익명 컨트롤러 테스트
controller
testing is more straight forward 을 통해 이러한 테스트를 작성하는 동안 request
테스트를 사용할 때 이와 같은 직접적인 문서를 찾을 수 없었습니다.그럼 시작하겠습니다. 다음과 같은
BaseController.rb
라는 컨트롤러가 있다고 가정해 보겠습니다.class BaseController < ActionController::API
private
def current_company
return "forem" if request.headers['X-Api-Token'].present?
return "external"
end
end
기사를 위해 우리는 url인 경우 현재 회사를 Forem으로 반환하는 간단한 방법을 만들었습니다. 문자열 'forem'을 포함하거나 단순히 "external"을 반환합니다.
이것을 테스트해 보겠습니다. rspec 파일인 base_controller_spec.rb에서 다음 코드를 사용합니다.
describe 'Sets company', type: :request do
before do
klass = Class.new(BaseController) do
def index
json_response(current_company, :ok))
end
end
stub_const('TestController', klass)
Rails.application.routes.disable_clear_and_finalize = true
Rails.application.routes.draw do
get '/test', to: 'test#index'
end
end
after { Rails.application.reload_routes! }
end
우리가 한 일은 다음과 같습니다.
Class.new(BaseController)
는 루비에서 상속의 한 형태입니다. stub_constant
를 사용합니다. Rails.application.routes.disable_clear_and_finalize = true
를 통해 모든 원래 경로를 보존합니다.테스트를 시작하겠습니다. 자명해야 합니다.
it 'when api token is given' do
get '/test', headers: {'X-Api-Token': 'random_test'}
expect(response.body).to eq("forem")
end
it 'when api token is not given' do
get '/test', headers: {}
expect(response.body).to eq("external")
end
이 간단한 사원은 베이스 컨트롤러를 테스트하기 위한 보다 복잡한 문제를 해결하기를 바랍니다. 전체 토론은 다음과 같습니다found here.
Reference
이 문제에 관하여(요청 사양에 대한 익명 컨트롤러 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vishaldeepak/anonymous-controller-tests-for-request-spec-57ma텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)