title: Use FakeItEasy's A.CallTo() on another method in same object
body: <p>Using FakeItEasy, how do I check to see if my object's method calls another method on this same object?</p>
  
  <p>The Test:</p>
  
  <pre><code>[TestMethod]
  public void EatBanana_CallsWillEat()
  {
    var banana = new Banana();
    var myMonkey = new Monkey();
  
    myMonkey.EatBanana(banana);
  
    //this throws an ArgumentException, because myMonkey is a real instance, not a fake
    A.CallTo(() =&gt; myMonkey.WillEat(banana)
      .MustHaveHappened();
  }
  </code></pre>
  
  <p>The Class:</p>
  
  <pre><code>public class MyMonkey {
    private readonly IMonkeyRepo _monkeyRepo;
  
    public MyMonkey(IMonkeyRepo monkeyRepo) {
      _monkeyRepo = monkeyRepo;
    }
  
    public void EatBanana(Banana banana) {
      //make sure the monkey will eat the banana
      if (!this.WillEat(banana)) {
        return;
      }
  
      //do things here
    }
  
    public bool WillEat(Banana banana) {
      return !banana.IsRotten;
    }
  }
  </code></pre>
  
  <p>I'm open to suggestions.  If I'm going about this all wrong, please let me know.</p>