如何测试一个块是否产生?

roo*_*roo 3 ruby rspec

我有一个测试需要检查是否正在调用给定方法的块.

block = lambda { 
    #some stuff 
}
block.should_receive(:call)

get_data_with_timeout(1, &block)

def get_data_with_timeout(timeout)
    begin
        timeout(timeout) {
            data = get_data
            yield data #do stuff
        }
    rescue Timeout::Error
        #timeout!
    end
end
Run Code Online (Sandbox Code Playgroud)

基本上我想检查一下,如果没有超时,则调用该块,反之亦然.这在rspec中是否可行?

Hon*_*gli 7

我使用的常见模式:

block_called = false
get_data_with_timeout(1) do
    block_called = true
end
block_called.should be_true
Run Code Online (Sandbox Code Playgroud)