Tôi đã sau (di sản, thừa hưởng từ người tiền nhiệm) VB.Net (framework 2.0) Lớp học và phương pháp mà tạo ra một hệ thống Event Log vào Ngoại lệ:Shim một khoảng trống phương pháp
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
Tôi cố gắng để kiểm tra điều này trong một dự án C# (framework 4.5) Unit Test, và một phần của logic yêu cầu rằng aValue
là hai số được phân tách bằng dấu phẩy - do đó ném một ngoại lệ và bản ghi sự kiện nếu không.
tôi đã thiết lập các Unit Test sau đây để đảm bảo rằng các ngoại lệ được ném một cách chính xác:
[TestClass]
public class MyClassUnitTest
{
private readonly StubMyClass myClass = new StubMyClass();
[TestMethod]
[ExpectedException(typeof(InvalidCastException))]
public void TestMyMethodInvalidMissingNumber()
{
this.myClass.MyMethod("0,");
}
}
này tất cả các công trình độc đáo và thử nghiệm đi, như logic trong MyMethod
gây ra ngoại lệ dự kiến. Tuy nhiên, tôi không muốn ghi nhật kí sự kiện. Vì vậy, làm cách nào để Shim số MyUtitlityClass
chặn cuộc gọi đến LogError
và không làm gì thay thế?
Tất cả các ví dụ Fakes tôi đã thấy được các phương pháp mà trả về một giá trị giả (và là tất cả viết bằng C#!) Khi tôi cố gắng và thực hiện một mô hình như vậy, nó mang lại cho một lỗi mà LogError không có một getter.
xin lỗi về C# comments trong mã VB.Net - renderer phát hiện những nhận xét VB.Net ' '' như một terminator chuỗi và các định dạng không đúng – Shevek
@ Meta-Knight - cảm ơn cho tôi thấy làm thế nào để có được bình luận VB! – Shevek