Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 使用Minitest为所有测试设置标题的最佳方法_Ruby On Rails 4_Tdd_Bdd_Minitest_Rails Api - Fatal编程技术网

Ruby on rails 4 使用Minitest为所有测试设置标题的最佳方法

Ruby on rails 4 使用Minitest为所有测试设置标题的最佳方法,ruby-on-rails-4,tdd,bdd,minitest,rails-api,Ruby On Rails 4,Tdd,Bdd,Minitest,Rails Api,.嗨。我有这个API和一个自定义头,它需要在所有请求中传递给任何控制器。在Minitest中,我应该在每个测试中执行@request.headers['Custom-Header']='Custom-Value'。碰巧我有很多控制器,这些代码在每个文件的顶部description块重复 我在想办法做这个干衣机。我甚至试过: module Minitest::CustomHeaderSetup def before_setup super @request.headers['C

.嗨。我有这个API和一个自定义头,它需要在所有请求中传递给任何控制器。在Minitest中,我应该在每个测试中执行
@request.headers['Custom-Header']='Custom-Value'
。碰巧我有很多控制器,这些代码在每个文件的顶部
description
块重复

我在想办法做这个干衣机。我甚至试过:

module Minitest::CustomHeaderSetup
  def before_setup
    super
    @request.headers['Custom-Header'] = 'Custom Value' if @request.present?
  end

  Minitest::Test.send(:include, self)
end

但是,
@request
此时不存在。有什么想法吗?谢谢

解决了

Minitest::Test.send(:include,self)
将该代码应用于每个测试文件,而不仅仅是控制器测试。因此,实际上应该做的是:

module Minitest::CustomHeaderSetup
  def before_setup
    super
    @request.headers['Custom-Header'] = 'Custom Value'
  end
end
对于我们希望表现为这样的控制器测试文件,我们应该添加:

include Minitest::CustomHeaderSetup
更新

这将自动将自定义标头设置为所有控制器测试

module Minitest::CustomHeaderSetup                                                       
  def before_setup
    super
    @request.headers['Custom-Header'] = 'Custom Value'
  end

  ActionController::TestCase.send(:include, self)
end

您好,应该在哪里添加这些代码,似乎@request is nil?
Minitest::CustomHeaderSetup
可以作为
test/support/custom\u header\u setup.rb
进入支持测试文件。