From 4f0e2f6e46ae39844fef83bfb9b885b3d3ff6f66 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Sun, 15 May 2022 16:21:05 -0600 Subject: [PATCH] Fix clearing stubs for mocks Prevent reverting initial defaults set by mock macro. --- src/spectator/mocks/mock.cr | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/spectator/mocks/mock.cr b/src/spectator/mocks/mock.cr index 114b70a..f10d1c9 100644 --- a/src/spectator/mocks/mock.cr +++ b/src/spectator/mocks/mock.cr @@ -14,13 +14,19 @@ module Spectator include ::Spectator::Mocked {% begin %} - private getter _spectator_stubs = [ - {% for key, value in value_methods %} - ::Spectator::ValueStub.new({{key.id.symbolize}}, {{value}}), - {% end %} - ] of ::Spectator::Stub + private getter(_spectator_stubs) do + [ + {% for key, value in value_methods %} + ::Spectator::ValueStub.new({{key.id.symbolize}}, {{value}}), + {% end %} + ] of ::Spectator::Stub + end {% end %} + def _spectator_clear_stubs : Nil + @_spectator_stubs = nil + end + # Returns the mock's name formatted for user output. private def _spectator_stubbed_name : String \{% if anno = @type.annotation(::Spectator::StubbedName) %} @@ -73,6 +79,10 @@ module Spectator end end + def _spectator_clear_stubs : Nil + @@_spectator_mock_registry.delete(self) + end + # Returns the mock's name formatted for user output. private def _spectator_stubbed_name : String \{% if anno = @type.annotation(::Spectator::StubbedName) %}