title: MockingKernel and Received throws an NotASubstituteException
body: <p>I'm using <code>NSubstituteMockingKernel</code> in order to build all my dependencies of my library classes. I've been struggling to solve a trouble for a week and I'm really exhausted. I need some help.</p>
  
  <p>This is my class:</p>
  
  <pre><code>class Core : ICoreService, ICore {
      private ICoreConfiguration configuration;
  
      Core(ICoreconfiguration configuration) {
          this.configuration = configuration;
      }
  
      override ICoreService.ParentMethod() {   //ICoreService implementation
          foreach (Item item in this.configuration.Items)
              this.ChildMethod();
      }
      virtual ChildMethod() {
        //do something
      }
  }
  </code></pre>
  
  <p><code>ICoreService</code> is:</p>
  
  <pre><code>interface ICoreService {
      void ParentMethod();
  }
  </code></pre>
  
  <p><code>ICore</code> is:</p>
  
  <pre><code>interface ICore {
      ICoreConfiguration Configuration { get; }
  }
  </code></pre>
  
  <p><code>ICoreConfiguration</code> is:</p>
  
  <pre><code>interface ICoreConfiguration {
      IEnumerable&lt;Item&gt; Items { get; }
  }
  </code></pre>
  
  <p>My test is:</p>
  
  <pre><code>[TestFixture]
  public class UsersManagementTests
  {
      private readonly NSubstituteMockingKernel IoCKernel;
  
      public UsersManagementTests()
      {
          this.IoCKernel = new NSubstituteMockingKernel();
      }
  
      [SetUp]
      public void SetUp()
      {
          this.IoCKernel.Reset();
      }
  
      [Test(Description = "Configured Users are well loaded on Kernel")]
      public void InitializationWithUsersTest()
      {
          //Setup Data
          Item item = Item.Create("item1");
          IEnumerable&lt;Item&gt; items = new List&lt;Item&gt;() { item };
  
          //Setup Mocks
          this.IoCKernel
              .Get&lt;ICoreConfiguration&gt;()
              .Items
                  .Returns(items);
          Core core = this.IoCKernel.Get&lt;Core&gt;();
  
          //Act
          kernel.ParentMethod();
  
          //Assert
          IEnumerable&lt;NSubstitute.Core.ICall&gt; calls = kernel.ReceivedCalls(); // ((((((1))))))
          kernel.Received(1).ChildMethod();                                                    // ((((((2))))))
      }
  }
  </code></pre>
  
  <p>When <code>((((((1))))))</code> or <code>((((((2))))))</code> are reached, I'm getting this <code>NSubstitute.Exceptions.NotASubstituteException</code> exception message now on last line:</p>
  
  <blockquote>
    <p>NSubstitute extension methods like .Received() can only be called on objects created using Substitute.For() and related methods.</p>
  </blockquote>
  
  <p>As you can see I'm trying to test <code>ChildMethod</code> method is reached once at least. <code>ChildMethod</code> must be called according to my <code>Core.Kernel</code> implementation.</p>
  
  <p>I will really appreciate some help.</p>
  
  <p>Thanks.</p>