我正在使用Rails和MiniTest,并且有几个类都是通过继承相关的。我想通过将测试放在模块中来重用它们。像这样:
module MyModule
should 'work' do
assert true
end
end
那么在我的测试中:
class MyTest < ActiveSupport::TestCase
require MyModule
end
问题是我得到了一个NoMethodError: undefined method should
我错过了什么?
1)这不是require
的作用
2a)你可能想要extend
一个模块,并定义一个方法,你可以调用代替
module MyModule
def should_work
should 'work' do
assert true
end
end
end
class MyTest < ActiveSupport::TestCase
extend MyModule
should_work
end
2b)或者,您可以仅extend
模块并通过Module.extended
自动调用测试:
module MyModule
def self.extended(base)
base.should_work
end
def should_work
should 'work' do
assert true
end
end
end
class MyTest < ActiveSupport::TestCase
extend MyModule
end
2c)你也可以把所有的东西放在Module.extended
中:
module MyModule
def self.extended(base)
base.should 'work' do
assert true
end
end
end
class MyTest < ActiveSupport::TestCase
extend MyModule
end
您需要在MyTest类中要求您的模块文件,在顶部:
require 'spec_helper'
require_relative '../spec/modules/module_file_name'
或者你可以把这个relative_path放到spec_helper中,然后只需要'spec_helper'。
希望对你有帮助