Как вызвать событие с помощью Moq?

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

Заранее спасибо.

5
задан RobC 31 January 2012 в 21:22
поделиться