Используйте метод A.CallTo () из FakeItEasy для другого метода в том же объекте

Используя FakeItEasy, как мне проверить, вызывает ли метод моего объекта другой метод для этого же объекта?

Тест:

[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(() => myMonkey.WillEat(banana)
    .MustHaveHappened();
}

Класс:

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;
  }
}

Я открыт для предложений. Если я все делаю неправильно, пожалуйста, дайте мне знать.

Ответы на вопрос(2)

Ваш ответ на вопрос