У меня есть следующие (устаревшие, унаследованные от предшественников) классы и методы VB.Net (framework 2.0), которые создают журнал системных событий при исключении:
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
Я пытаюсь проверить это в проекте Unit Test С# (framework 4.5), и часть логики требует, чтобы aValue
было двумя числами, разделенными запятой, тем самым вызывая исключение и журнал событий, если нет.
Я настроил следующий модульный тест, чтобы убедиться, что исключение выдается правильно:
[TestClass]
public class MyClassUnitTest
{
private readonly StubMyClass myClass = new StubMyClass();
[TestMethod]
[ExpectedException(typeof(InvalidCastException))]
public void TestMyMethodInvalidMissingNumber()
{
this.myClass.MyMethod("0,");
}
}
Все это прекрасно работает, и тест проходит успешно, поскольку логика в MyMethod
вызывает ожидаемое исключение. Однако я не хочу, чтобы журнал событий записывался. Итак, как мне настроить MyUtitlityClass
, чтобы перехватить вызов LogError
и ничего не делать вместо этого?
Все примеры подделок, которые я видел, относятся к методам, которые возвращают поддельное значение (и все написаны на C#!) Когда я пытаюсь реализовать такой шаблон, он выдает ошибку, что LogError не имеет добытчик.
'
как ограничитель строки и неправильно форматирует - person Shevek   schedule 24.07.2013