Add default stubs from parent contexts

This commit is contained in:
Michael Miller 2019-11-10 13:22:18 -07:00
parent d2e27d1e6e
commit 6c0693f2a4
2 changed files with 20 additions and 9 deletions

View file

@ -11,11 +11,20 @@ module Spectator::Mocks
@entries = {} of Key => Entry
def initialize(context : TestContext)
@all_instances = context.stubs.map do |k, v|
entry = Entry.new
entry.stubs.concat(v)
{k, entry}
end.to_h
current_context = context
while current_context
current_context.stubs.each do |k, v|
stubs = if @all_instances.has_key?(k)
@all_instances[k].stubs
else
entry = Entry.new
@all_instances[k] = entry
entry.stubs
end
stubs.concat(v)
end
current_context = current_context.parent?
end
end
def reset : Nil

View file

@ -3,15 +3,17 @@ require "./test_values"
module Spectator
class TestContext
getter! parent
getter values
getter stubs : Hash(String, Deque(Mocks::MethodStub))
def initialize(@parent : TestContext?,
@hooks : ExampleHooks,
@conditions : ExampleConditions,
@values : TestValues,
@stubs : Hash(String, Deque(Mocks::MethodStub)))
@hooks : ExampleHooks,
@conditions : ExampleConditions,
@values : TestValues,
@stubs : Hash(String, Deque(Mocks::MethodStub)))
@before_all_hooks_run = false
@after_all_hooks_run = false
end