Bvu*_*Ic7 10 ruby rspec ruby-on-rails minitest ruby-on-rails-3
在RSpec中我可以创建辅助模块 /spec/support/...
module MyHelpers
def help1
puts "hi"
end
end
Run Code Online (Sandbox Code Playgroud)
并将其包含在每个规范中:
RSpec.configure do |config|
config.include(MyHelpers)
end
Run Code Online (Sandbox Code Playgroud)
并在我的测试中使用它,如下所示:
describe User do
it "does something" do
help1
end
end
Run Code Online (Sandbox Code Playgroud)
如何在所有MiniTest测试中包含一个模块,而不必在每次测试中重复自己?
Pet*_*ein 20
从Minitest README:
=== How to share code across test classes?
Use a module. That's exactly what they're for:
module UsefulStuff
def useful_method
# ...
end
end
describe Blah do
include UsefulStuff
def test_whatever
# useful_method available here
end
end
Run Code Online (Sandbox Code Playgroud)
只需在文件中定义模块并使用require将其拉入.例如,如果在test/support/useful_stuff.rb中定义了'UsefulStuff',则可能在您的单个测试文件中需要'support/useful_stuff'.
更新:
为了澄清,在您现有的test/test_helper.rb文件或您创建的新test/test_helper.rb文件中,包括以下内容:
Dir[Rails.root.join("test/support/**/*.rb")].each { |f| require f }
Run Code Online (Sandbox Code Playgroud)
这将需要test/support子目录中的所有文件.
然后,在每个单独的测试文件中添加
require 'test_helper'
Run Code Online (Sandbox Code Playgroud)
这与RSpec完全类似,在每个spec文件的顶部都有一个require'pect_helper'行.
minitest 并不像 RSpec 那样为每个测试类提供一种方法include或一个模块。extend
您最好的选择是重新打开测试用例类(有所不同,具体取决于您使用的迷你测试版本)以及include您想要的任何模块。您可能希望在您自己的文件test_helper或专用文件中执行此操作,让其他人知道您正在进行猴子修补微型测试。这里有些例子:
对于 minitest ~> 4(通过 Ruby 标准库获得的内容)
module MiniTest
class Unit
class TestCase
include MyHelpers
end
end
end
Run Code Online (Sandbox Code Playgroud)
适用于迷你测试 5+
module Minitest
class Test
include MyHelperz
end
end
Run Code Online (Sandbox Code Playgroud)
然后,您可以在测试中使用包含的方法:
class MyTest < Minitest::Test # or MiniTest::Unit::TestCase
def test_something
help1
# ...snip...
end
end
Run Code Online (Sandbox Code Playgroud)
希望这能回答您的问题!
| 归档时间: |
|
| 查看次数: |
5341 次 |
| 最近记录: |