7
votes

Est-il possible de se moquer des méthodes de journal Nlog?

est-il possible / facile à moquer des méthodes de journal Nlog, en utilisant des simulacres de rhino ou similaires?


3 Réponses :


3
votes

Vous ne pouvez que simuler des méthodes virtuelles. Mais si vous créez une interface pour la journalisation, puis implémentez-la à l'aide de Nlog, vous pouvez utiliser une injection de dépendance et dans vos tests, utilisez une interface moquée pour voir si le système sous Test (SUT) consiste à enregistrer ce que vous attendez de loger.

public class SUT
{
  private readonly ILogger logger;
  SUT(ILogger logger) { this.logger = logger;}
  MethodUnderTest() {
    // ...
    logger.LogSomething();
    // ...
  }
}

// and in tests
var mockLogger = new MockLogger();
var sut = new SUT(mockLogger);
sut.MethodUnderTest();
Assert.That("Expected log message", Is.Equal.To(mockLogger.LastLoggedMessage));


0 commentaires

1
votes

La réponse simple, n'est pas "non". En examinant le code, l'injection de dépendance n'est pas prise en charge, ce qui semble plutôt une surveillance, d'autant plus que cela n'a pas l'air difficile à mettre en œuvre (au premier abord).

Les seules interfaces du projet sont là pour prendre en charge COM des objets Interop et quelques autres choses. L'enregistreur principale La classe de béton ne met ni une interface, ni ne fournit des méthodes virtuelles.

Vous pouvez également fournir une interface vous-même ou utiliser des moles / Typemock / un autre cadre d'isolation pour se moquer de la dépendance.


0 commentaires