Невозможно включить тесты musta в модуль
Я использую Rails с MiniTest и имею несколько классов, которые все связаны через наследование. Я хотел бы повторно использовать тесты, поместив их в модуль. Что-то вроде этого:
module MyModule
should 'work' do
assert true
end
end
Тогда в моих тестах:
class MyTest < ActiveSupport::TestCase
require MyModule
end
Проблема в том, что я получаю NoMethodError: undefined method should
Что мне не хватает?
2 ответа
Решение
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'
Или вы можете поместить этот lative_path в spec_helper, а затем просто потребовать 'spec_helper' .
Надеюсь, это поможет вам