Jes*_*nac 5 tdd bdd minitest rails-api ruby-on-rails-4
.Hi.我有这个API,以及一个自定义标头,需要将所有请求传递给任何控制器.在Minitest,我应该@request.headers['Custom-Header'] = 'Custom Value'在每一次测试中都做.好吧,碰巧我有很多控制器,这个代码describe在每个文件的顶部块重复.
我试图找到一些方法来制作这款DRYer.我甚至尝试过:
module Minitest::CustomHeaderSetup
def before_setup
super
@request.headers['Custom-Header'] = 'Custom Value' if @request.present?
end
Minitest::Test.send(:include, self)
end
Run Code Online (Sandbox Code Playgroud)
但@request此刻并不存在.有什么想法吗?谢谢!
解决了!
Minitest::Test.send(:include, self)将该代码应用于每个测试文件,而不仅仅是控制器测试.那么,实际应该做的是:
module Minitest::CustomHeaderSetup
def before_setup
super
@request.headers['Custom-Header'] = 'Custom Value'
end
end
Run Code Online (Sandbox Code Playgroud)
对于那些我们想要表现得像这样的控制器测试文件,我们应该添加:
include Minitest::CustomHeaderSetup
Run Code Online (Sandbox Code Playgroud)
UPDATE
这会自动将自定义标头设置为所有控制器测试.
module Minitest::CustomHeaderSetup
def before_setup
super
@request.headers['Custom-Header'] = 'Custom Value'
end
ActionController::TestCase.send(:include, self)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |