gpt4 book ai didi

vb.net - 如何使用最小起订量发起事件?

转载 作者:行者123 更新时间:2023-12-03 00:41:24 26 4
gpt4 key购买 nike

我正在尝试在模拟界面中引发事件。我可以在 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 网站似乎没有表明情况如此。

提前致谢。

最佳答案

使用此行,您的测试是绿色的:

sendable.Raise(Sub(e) AddHandler e.SendMessage, AddressOf MockHandler, announcement)

您还需要创建一个“模拟”事件处理程序才能使其工作:

Sub MockHandler()

End Sub

编辑:

我不是 VB 人员,所以使用内联匿名方法而不是 MockHandler 似乎有更短的语法::

sendable.Raise(Sub(e) AddHandler e.SendMessage, Function() vbEmpty, announcement)

关于vb.net - 如何使用最小起订量发起事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9087141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com