Es kann getestet werden, ob eine Methode mit Moq and dependency injection aufgerufen wurde. Ist es jedoch möglich, zu testen, ob eine Methode in einer Klasse eine andere in derselben Klasse aufruft?Test, ob Methode in ClassA von einer anderen Methode in ClassA aufgerufen wurde
Zum Beispiel möchte ich testen, dass, wenn ich eine bestimmte Ausnahme protokollieren, dass eine Informationsnachricht auch protokolliert wird.
Die Methode ist:
public void Error(string message, Exception exception, long logId = 0)
{
var int32 = (int)logId;
Info("Id was converted to an int so that it would fit in the log: " + logId, int32);
Error(message, exception, int32);
}
Dies war bei Einheit mein Versuch, es zu testen. Der Test schlägt fehl, gibt es einen Weg, wie es gemacht werden kann?
void logging_an_error_with_a_long_id_also_logs_info()
{
var mock = new Mock<ILogger>();
var testedClass = new Logger();
var counter = 0;
testedClass.Error("test" + counter++, new Exception("test" + counter), Int64.MaxValue);
mock.Verify(m => m.Info(It.IsAny<string>(), It.IsAny<int>()));
}
Da die Info
und Error
Methoden in der gleichen Klasse (Klasse A) sind, ich glaube nicht, dass ich KlasseA als Abhängigkeit in KlasseA passieren kann. Muss es nicht getestet werden?
Schauen Sie [hier] (http://stackoverflow.com/questions/1417048/how-to-verify-another-method-in-the-class-was-called-using-moq). – dee