È possibile verificare se è stato chiamato un metodo utilizzando Moq and dependency injection. Tuttavia, è possibile testare se un metodo in una classe chiama un altro all'interno della stessa classe?Test se il metodo in ClassA è stato chiamato da un altro metodo in Classe A
Ad esempio, voglio verificare che se registro una certa eccezione, viene registrato anche un messaggio informativo.
Il metodo è:
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);
}
Questo è stato il mio tentativo di unità di testarlo. Il test fallisce, esiste un modo per farlo?
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>()));
}
Poiché i Info
e Error
metodi sono nella stessa classe (ClassA), non ritengo posso passare ClasseA come una dipendenza in ClassA. Quindi non ha bisogno di essere testato?
Dai un'occhiata [qui] (http://stackoverflow.com/questions/1417048/how-to-verify-another-method-in-the-class-was-called-using-moq). – dee