我的Stack模块有以下规格:
describe Stack do
let(:stackable_obj) { (Class.new { include Stack }).new }
describe '#stack' do
context 'when it has no elements' do
it 'is an empty array' do
expect(stackable_obj.stack).to eq([])
end
end
end
..
end
我没有看到如何测试堆栈在非空时返回元素。我的模块看起来像这样:
module Stack
def stack
@stack ||= []
end
end
我会模拟堆栈方法吗?我这样做了:
context 'when it has elements' do
it 'gives an array with the elements' do
allow(stackable_obj).to receive(:stack).and_return([1,2,3])
expect(stackable_obj.stack).to eq([1,2,3])
end
end
但不知怎的,这似乎是一个无用的测试,因为我实际上在嘲笑我正在测试的方法。
答案 0 :(得分:0)
在我看来,it 'gives an array with the elements'
测试用例的存根是一个级别太高。您希望确保调用stackable_obj.stack
时返回stackable_obj
的{{1}}实例变量中包含的值,因此@stack
的值是我认为的你想要存根:
@stack