我有这个... ...
class LegoFactory # file_num_one.rb
include Butter # this is where the module is included that I want to test.
include SomthingElse
include Jelly
def initialize(for_nothing)
@something = for_nothing
end
end
class LegoFactory # file_num_2.rb
module Butter
def find_me
# test me!
end
end
end
因此,当LegoFactory.new(“hello”)我们将find_me方法作为实例化LegoFactory的实例方法。
但是,类中有很多模块包含,我只是想在不实例化LegoFactory类的情况下分离 Butter 模块。
我想在LegoFactory中测试仅 Butter 模块。名称由此示例组成。
可以这样做吗?
注意:我无法重构代码库,我必须使用我所拥有的。我想测试单个模块,而不需要LegoFactory类的其余部分及其他包含模块的复杂性。
答案 0 :(得分:2)
一种方法是创建一个包含模块的假类来测试它:
describe LegoFactory::Butter do
let(:fake_lego_factory) do
Class.new do
include LegoFactory::Butter
end
end
subject { fake_lego_factory.new }
describe '#find_me' do
it 'finds me' do
expect(subject.find_me).to eq :me
end
end
end
您还可以在假类中实现 find_me 所需的任何方法的模拟版本。