ruby-on-rails - 如何在 Rspec 中测试一个简单的 block 参数?

标签 ruby-on-rails rspec

我正在尝试为这段代码编写期望:

Sidekiq::Queue.all.each(&:clear)

我知道简写会生成一个 block ,到目前为止我已经尝试过满足匹配器,这是我正在使用的当前版本。我知道这种语法不正确,我会不断更新我尝试的内容:

expect(Sidekiq::Queue).to receive_message_chain(:all, :each) { &:clear }.and_return(true)

最佳答案

这是我用来解决这个问题的方法,但我对 HOW 而不是 WHY 的其他想法持开放态度,因为测试 block 可能很困难,我认为这将是一个很好的例子。

expect(Sidekiq::Queue).to receive_message_chain(:all, :each) do |&block|
  expect(block).to be(Proc.new(&:clear))
end

信用到期的信用:https://github.com/rspec/rspec-mocks/issues/1182

关于ruby-on-rails - 如何在 Rspec 中测试一个简单的 block 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61482371/

相关文章:

ruby-on-rails - rake rails :freeze:gems and rake gems:unpack? 之间有什么区别

ruby-on-rails - 使用 Devise、Doorkeeper 和 OAuth2 token 的 API 和应用程序身份验证

python - Python 的 ruby​​ 代码的等效 HMAC SHA512 key

ruby-on-rails - 包含文件 ruby Selenium

ruby-on-rails - rspec - 为什么 be_valid 不起作用

ruby - rspec 中的 double 方法有什么用?

ruby-on-rails - 在 Ruby on Rails 4 中为 respond_to 和 respond_with 设置自定义格式

mysql - gem 2.0。 ActiveRecord 4.1.2 的兼容性问题

ruby-on-rails - 我如何在我的 RSpec 中设置 request.referrer?

ruby-on-rails - 带有 url 参数的 Rspec View 测试