TL;DR
Use controller.send(:method_name, arg)
π€ Situation
class ApplicationController < ActionController::Base
def auto_encode(target)
UserAgentBrowser.new(request.user_agent).os =~ /Windows/ ? URI.escape(target) : target
end
end
π You can write like this
require 'rails_helper'
describe V3::ApplicationController, type: :controller do
describe '#auto_encode' do
let(:text) { 'γ«γ»γγ' }
let(:encoded_text) { '%E3%81%AB%E3%81%BB%E3%82%93%E3%81%94' }
context 'user_agent is chrome' do
it { expect(controller.send(:auto_encode, text)).to eq text }
end
context 'user_agent is not chrome' do
let(:user_agent) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.3;)' }
before { request.user_agent = user_agent }
it { expect(controller.send(:auto_encode, text)).to eq encoded_text }
end
end
end
Top comments (0)