如何测试我是否正确连接了mixin?
我有一个mixin,它提供了与named_scope或protected_attribute类似的类方法。我已经广泛测试了mixin,现在需要测试它混合的模型是否正确使用它。我不想再次测试整个mixin,只是我用正确的args调用它。
模特:
class SomeClass
include MatchMixin
match :name
end
测试:
describe SomeClass do
it { should be_kind_of(MatchMixin) }
it "calls match with :name" do
SomeClass.stubs(:match)
SomeClass.new
SomeClass.should have_received(:match).with(:name) # <= this fails
end
end
mixin:
module MatchMixin
extend ActiveSupport::Concern
module ClassMethods
def match(arg)
# lots of awesome code
end
end
end
我已经尝试了我能想到的一切。有什么建议吗?
答案 0 :(得分:1)
我个人只是用你的第一个例子:
it "includes MatchMixin" do
SomeClass.new.should be_a_kind_of(MatchMixin)
end
但是,如果你的mixin需要填写一些缺失的部分(即需要一些不知道如何实现的方法定义),那么你可以使用RSpec的shared examples。
那意味着规范代码本身只写了一次,但是用不同的输入来运行。
it_behaves_like "a MatchMixin"