VB.NET中Moq框架如何组织模拟活动?

2026-05-06 09:251阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计453个文字,预计阅读时间需要2分钟。

VB.NET中Moq框架如何组织模拟活动?

我正在尝试在模拟环境中开发一个事件。我可以在C语言中实现。

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

提前致谢.

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

VB.NET中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)

本文共计453个文字,预计阅读时间需要2分钟。

VB.NET中Moq框架如何组织模拟活动?

我正在尝试在模拟环境中开发一个事件。我可以在C语言中实现。

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

提前致谢.

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

VB.NET中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)