ruby - 如何测试一个 block 是否被屈服?

标签 ruby rspec

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

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

本质上,我想检查是否没有超时,然后 block 被调用,反之亦然。这在 rspec 中可能吗?

最佳答案

我常用的模式:

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

关于ruby - 如何测试一个 block 是否被屈服?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2286192/

相关文章:

ruby - 这个哈希是怎么回事?

ruby - MiniTest中的assert_predicate有什么用?

vim - 在 gvim 中运行 rspec

ruby-on-rails - RSpec 'Expect' 语法和惯用属性规范

ruby-on-rails - RSpec stub 问题—— stub 似乎在工作但未被接收

ruby-on-rails - JSON 字符串到对象 - Ruby on Rails

ruby-on-rails - 在 Google Cloud App Engine 中托管 Rails App 并设置环境变量

ruby - Capybara::ElementNotFound - 我如何查看它检查的来源?

ruby-on-rails - RSpec, stub 嵌套资源方法

ruby-on-rails - 原子 rails 4 个窗口 64 位