在使用 Rails 构件 API 应用的时候,通常会把用户的 token 放在 request.header
中。在测试时候,我们可以通过下面的方式,给所有的 controller test
文件都加上 token
# test/lib/custom_header_setup.rb
module CustomHeaderSetup
def before_setup
super
@request.headers['Custom-Header'] = 'Custom Value'
end
ActionController::TestCase.send(:include, self)
end
test/test_helper.rb
引入该文件:
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'support/custom_header_setup'
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
# Add more helper methods to be used by all tests here...
end
问题来了,Rails 5 的功能测试已经不再继承 ActionController::TestCase
,而改为继承 ActionDispatch::IntegrationTest
。并且取消了 @request
变量,我们需要用下面的方式来设置 header。
get admin_path, headers: {'HTTP_AUTHORIZATION' => something }