无法在模块中包含应计测试



我正在使用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'。

希望对你有帮助

最新更新