我正在使用带有MiniTest的Rails,并且有几个类都通过继承相关。我想通过将测试放在模块中来重用测试。像这样:
module MyModule
should 'work' do
assert true
end
end
然后在我的测试中:
class MyTest < ActiveSupport::TestCase
require MyModule
end
问题是我得到NoMethodError: undefined method should
我错过了什么?
答案 0 :(得分:1)
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
答案 1 :(得分:0)
您需要在MyTest类中要求您的模块文件,在顶部:
require 'spec_helper'
require_relative '../spec/modules/module_file_name'
或者您可以将此relative_path放入spec_helper,而不仅仅需要'spec_helper'。
希望这能帮到你