【发布时间】:2014-11-07 03:42:56
【问题描述】:
假设我正在使用 pg gem 和 RSpec,我应该采取什么方法来正确测试我的 LISTEN 和 NOTIFY 语句是否有效? pg 的wait_for_notify 阻塞,所以我似乎无法“通知,然后收听”或“收听,然后通知”。我忽略了什么吗?
例如:
it "notifies" do
conn = ActiveRecord::Base.connection
it_ran = false
conn.execute "LISTEN my_channel"
conn.execute "NOTIFY my_channel, 'hello'"
conn.wait_for_notify(1) do |channel, pid, payload|
it_ran = true
end
expect(it_ran).to eq true
end
编辑:
这适用于控制器,甚至是 rails 控制台,但由于某种原因,它在 RSpec 测试中不起作用。奇怪的是,直接使用 pg gem 确实有效。为什么 ActiveRecord 在这种情况下可能不起作用?
【问题讨论】:
标签: ruby postgresql activerecord rspec