Mam następujący (Legacy, odziedziczony poprzedników) VB.Net (Framework 2.0) Klasy i metody, która tworzy zdarzenie systemowe Zaloguj się wyjątek:Shim pustka metoda
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
próbuję przetestować w projekcie testowym C# (framework 4.5) Unit i część logiki wymaga, aby aValue
były dwoma liczbami oddzielonymi przecinkiem - w ten sposób zgłaszając wyjątek i dziennik zdarzeń, jeśli nie.
mam założyć następujące testów jednostkowych w celu zapewnienia, że wyjątek jest poprawnie wrzucony:
[TestClass]
public class MyClassUnitTest
{
private readonly StubMyClass myClass = new StubMyClass();
[TestMethod]
[ExpectedException(typeof(InvalidCastException))]
public void TestMyMethodInvalidMissingNumber()
{
this.myClass.MyMethod("0,");
}
}
To wszystko działa ładnie i testy przechodzi, jak logika w MyMethod
powoduje oczekiwany wyjątek. Nie chcę jednak, aby rejestr zdarzeń był zapisywany. Jak więc Shim the MyUtitlityClass
przechwycić połączenie do LogError
i nic nie robić zamiast tego?
Wszystkie przykłady podróbki widziałem są dla metod zwracających fałszywą wartość (i są wszystko napisany w języku C#!) Kiedy próbuję i wdrożenie takiego wzoru, daje błąd, który logError nie posiada rębacz.
przykro C# komentarzach w kodzie VB.Net - renderer wykrywa komentarz VB.Net ' '' jako terminator smyczkowy i formatów nieprawidłowo – Shevek
@ Meta-rycerz - dzięki za pokazując mi, jak uzyskać komentarze VB! – Shevek