Я пытаюсь вызвать событие в поддельном интерфейсе.Я могу получить это в 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, похоже, не указывает, что это так.
Заранее спасибо.