diff --git a/lib/muack/spy.rb b/lib/muack/spy.rb
index <HASH>..<HASH> 100644
--- a/lib/muack/spy.rb
+++ b/lib/muack/spy.rb
@@ -5,12 +5,12 @@ module Muack
   class Spy < Mock
     def initialize stub
       super(stub.object)
-      @secret = stub.__mock_disps.values.flatten # steal disps
+      @stub = stub
     end
 
     # used for Muack::Session#verify
     def __mock_verify
-      @secret.each do |defi|
+      @stub.__mock_disps.values.flatten.each do |defi|
         __mock_dispatch(defi.msg, defi.args) if __mock_defis.key?(defi.msg)
       end
       super # simulate dispatching before passing to mock to verify
diff --git a/test/test_stub.rb b/test/test_stub.rb
index <HASH>..<HASH> 100644
--- a/test/test_stub.rb
+++ b/test/test_stub.rb
@@ -62,6 +62,14 @@ describe Muack::Stub do
       2.times{ spy(Obj).say }
     end
 
+    should 'work with call spy and call spy' do
+      stub(Obj).say{}
+      2.times do
+        Obj.say.should.eq nil
+        spy(Obj).say
+      end
+    end
+
     should 'verify spy arguments' do
       stub(Obj).say(1){|a|a}
       Obj.say(1).should.eq 1
delay the time we steal the secret, so that spy and stub are synced