【发布时间】:2010-11-04 21:21:06
【问题描述】:
假设我们有一个类:
class ObjectWithCaching
def cached_attribute(key, cache_handler)
cache_handler.cache(key) { expensive_operation }
end
def expensive_operation
#...
end
end
而且我们已经测试了 cache_handler,所以我们知道它只会在cache 中找不到key 时执行该块。
我们要测试cache_handler#cache是否正确执行。
问题是:如何编写剩余的待定规范?
describe ObjectWithCaching, "#cached_attribute" do
let(:key) { double }
let(:cache_handler) { double }
specify do
cache_handler.should_receive(:cache).with(key)
subject.cached_attribute(key, cache_handler)
end
it "passes #expensive_operation to block of cache_handler#cache" do
pending
subject.cached_attribute(key, cache_handler)
end
end
【问题讨论】:
标签: ruby unit-testing mocking rspec