Verwenden Sie A.CallTo () von FakeItEasy für eine andere Methode in demselben Objekt

Wie überprüfe ich mithilfe von FakeItEasy, ob die Methode meines Objekts eine andere Methode für dasselbe Objekt aufruft?

Der Test:

[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();
}

Die Klasse:

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

Ich bin offen für Vorschläge. Wenn ich das alles falsch mache, lass es mich bitte wissen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage