在 VB 中通过引用返回模拟类

问题描述 投票:0回答:2

让我上这样的课:

Public Class MyClass
    Implements IMyClass

    Public Function GetSomething(firstParameter As String, secondParameter As String, ByRef thirdParameter As String) As Boolean Implements IMyClass.GetSomething
        thirdParameter = _secondDependency.GetSomething(firstParameter, thirdParameter)
        Return True
    End Function

    'rest of class

现在在我的测试中,我正在使用 NUnit 和 Moq lib,并且想要设置这个模拟类

_mockMyClass.Setup(
            Function(myClass) myClass.GetSomething(It.IsAny(Of String), It.IsAny(Of String), It.IsAny(Of String))).Returns(True)

但我不知道如何将thirdParameter设置为我定义的某个字符串,因为它是通过引用传递的,而且我不知道如何使用最小起订量来做到这一点。我想在不更改模拟类的情况下执行此操作。

vb.net nunit moq
2个回答
0
投票

我从来没有这样做过,但是根据我刚刚进行的两分钟的网络搜索和阅读,看起来你需要这样做:

var str = It.IsAny(Of String)

_mockMyClass.Setup(
            Function(myClass) myClass.GetSomething(It.IsAny(Of String), It.IsAny(Of String), str)).Returns(True)

这是基于此处提供的 C# 示例。 VB 的

ByRef
相当于 C# 的
ref


0
投票

经过一番挖掘,我得到了这个,它可以完成工作:

_mockMyClass.
            Setup(Function(myClass) myClass.GetSomething(It.IsAny(Of String), It.IsAny(Of String), It.IsAny(Of String))).
            Callback(
                Sub(firstParameter As String, secondParameter As String, ByRef thirdParameter As String)
                    thirdParameter = "someString"
                End Sub).

值得注意的是,这适用于 Moq 4.8+

© www.soinside.com 2019 - 2024. All rights reserved.