我正在尝试在模拟接口中引发事件。在C#中,我可以做到这一点,但是出于某些麻烦的原因,我无法在VB.Net中使其工作。如果有人能帮助我解决这个问题,我将不胜感激。希望我没有在概念上错过什么,我所缺少的只是一些语法。以下是我正在使用的类似代码:
Public Interface ISendable
Event SendMessage(message As String)
End Interface
''**********
Public Interface IPrintable
Sub PrintAnnouncement(announcement As String)
End Interface
'******
Public Class BulletinBoard
Private mPrintable As IPrintable
Public Sub New(sendable As ISendable, printable As IPrintable)
AddHandler sendable.SendMessage, AddressOf GetItOut
mPrintable = printable
End Sub
Public Sub GetItOut(message As String)
'Do some stuff I can verify happened with Moq
mPrintable.PrintAnnouncement(message)
End Sub
End Class
我希望能够运行类似于这样的测试:
Imports NUnit.Framework
Imports Moq
<TestFixture()> _
Public Class SendMessageTests
<Test()> _
Public Sub canRaiseEvent()
Dim announcement As String = "What the?"
Dim sendable As New Mock(Of ISendable)()
Dim printable As New Mock(Of IPrintable)()
Dim bb As New BulletinBoard(sendable.Object, printable.Object)
'What is the syntax for raising sendable's event?
'sendable.Raise( ....? )
printable.Verify(Sub(d) d.PrintAnnouncement(announcement), Times.Once())
End Sub
End Class
有人能帮我完成或纠正测试类中以“sendable.Raise…”开头的行吗?也许我需要做更多的设置,但Moq网站似乎没有表明这是必须的。
提前感谢。