Fix stubbing method with arguments in activerecord/test/cases/explain_test.rb
This commit is contained in:
parent
41b5306ad6
commit
1aba4b0ae1
@ -64,10 +64,21 @@ def test_exec_explain_with_binds
|
||||
end
|
||||
|
||||
private
|
||||
def stub_explain_for_query_plans(query_plans = ["query plan foo", "query plan bar"], &block)
|
||||
def stub_explain_for_query_plans(query_plans = ["query plan foo", "query plan bar"])
|
||||
explain_called = 0
|
||||
|
||||
connection.stub(:explain, proc { explain_called += 1; query_plans[explain_called - 1] }, &block)
|
||||
# Minitest's `stub` method is unable to correctly replicate method arguments
|
||||
# signature, so we need to do a manual stubbing in this case.
|
||||
metaclass = class << connection; self; end
|
||||
explain_method = metaclass.instance_method(:explain)
|
||||
metaclass.define_method(:explain) do |_arel, _binds = [], _options = {}|
|
||||
explain_called += 1
|
||||
query_plans[explain_called - 1]
|
||||
end
|
||||
yield
|
||||
ensure
|
||||
metaclass.undef_method(:explain)
|
||||
metaclass.define_method(:explain, explain_method)
|
||||
end
|
||||
|
||||
def bind_param(name, value)
|
||||
|
Loading…
Reference in New Issue
Block a user