代码之家  ›  专栏  ›  技术社区  ›  roo

如何测试一个块是否已屈服?

  •  3
  • roo  · 技术社区  · 14 年前

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

    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
    

    本质上,我想检查一下,如果没有超时,那么块被调用,反之亦然。这在RSPEC中可行吗?

    1 回复  |  直到 14 年前
        1
  •  7
  •   Hongli    14 年前

    我使用的一种常见模式:

    block_called = false
    get_data_with_timeout(1) do
        block_called = true
    end
    block_called.should be_true