Ho il seguente (eredità, ereditata dai predecessori) VB.Net (quadro 2.0) classi e metodi che crea un registro eventi di sistema sul Eccezione:Shim Un vuoto metodo
Public Interface IMyClass
Function MyMethod(ByVal aValue As String) As Date
End Interface
Public Class MyClass
Implements IMyClass
Public Function MyMethod(ByVal aValue As String) As Date Implements IMyClass.MyMethod
Try
' Calculate return date based on aValue
Catch ex As Exception
Call MyUtilityClass.LogError("MyClass", "MyMethod", ex)
Throw
End Try
End Function
End Class
Partial Public NotInheritable Class MyUtilityClass
Public Shared Sub LogError(ByVal className As String,
ByVal methodName As String,
ByVal ex As Exception)
' Write details to Event Log
End Sub
End Class
sto cercando di testare questo in un progetto C# Unit (framework 4.5) Test unità e parte della logica richiede che aValue
siano due numeri separati da una virgola, in tal modo generando un'eccezione e un registro eventi se non.
ho predisposto il seguente unit test per garantire che l'eccezione sia correttamente gettato:
[TestClass]
public class MyClassUnitTest
{
private readonly StubMyClass myClass = new StubMyClass();
[TestMethod]
[ExpectedException(typeof(InvalidCastException))]
public void TestMyMethodInvalidMissingNumber()
{
this.myClass.MyMethod("0,");
}
}
Questo tutto funziona bene e il test viene superato, come la logica MyMethod
causa l'eccezione prevista. Tuttavia, non voglio che il registro eventi venga scritto. Quindi, come faccio a Shim the MyUtitlityClass
per intercettare la chiamata a LogError
e non fare nulla invece?
Tutti gli esempi Falsi che ho visto sono per i metodi che restituiscono un valore falso (e sono tutto scritto in C#!) Quando provo e attuare un tale modello, dà un errore che LogError non dispone di un getter.
dispiace per C# commenti nel codice VB.Net - il renderer rileva il commento VB.Net ' '' come terminatore di stringa e formati in modo non corretto – Shevek
@ Meta-Knight - grazie per la mostrandomi come ottenere i commenti VB in! – Shevek