如何在VB.NET使用RhinoMocks的只读属性设置返回值?(How to setup retu

2019-09-17 18:14发布

我在VB.NET使用RhinoMock,我需要设置的返回值的只读列表。

这里就是我想要做的(但不工作):

dim s = Rhino.Mocks.MockRepository.GenerateStub(of IUserDto)()
s.Id = guid.NewGuid
s.Name = "Stubbed name"
s.Posts = new List(of IPost)

它失败的编译,因为文章是一个只读属性。

然后我试图lambda表达式,它工作正常的函数调用,但没有这么多的属性。 这无法编译。

s.Stub(Function(x As IUserDto) x.Posts).Return(New List(Of IPost))

下一页(失败)的尝试是使用SetupResults,但这未能说明它不能在回放模式下使用。

Rhino.Mocks.SetupResult.For(s.Posts).Return(New List(Of IPost))

这使我回到我的问题:

如何设置在VB.NET使用RhinoMocks一个只读属性,返回值?

Answer 1:

IUserDto的接口? 如果是,那么它应该只是工作。 如果不是,那么问题可能是有问题的只读属性是不可重写。 RhinoMocks只能模拟性质/它们在接口中定义或可以被覆盖的方法。

这里是一个证明的lambda语法应工作我(笨拙)尝试:

Imports Rhino.Mocks

Public Class Class1

    Public Sub Test()
        Dim s = MockRepository.GenerateMock(Of IClass)()
        Dim newList As New List(Of Integer)

        newList.Add(10)

        s.Stub(Function(x As IClass) x.Field).Return(newList)

        MsgBox(s.Field(0))

    End Sub

End Class

Public Class AnotherClass
    Implements IClass

    Public ReadOnly Property Field() As List(Of Integer) Implements IClass.Field
        Get
            Return New List(Of Integer)
        End Get
    End Property
End Class

Public Interface IClass
    ReadOnly Property Field() As List(Of Integer)
End Interface

即我会得到与它显示的数字10一个消息框(我没有刻意去尝试挂钩了这样的单元测试框架,但不应该有所作为)被调用时Class1.Test。

希望帮助(这是一个有趣的练习尝试与RhinoMocks在VB.NET中anycase工作)。



文章来源: How to setup return value for a readonly property using RhinoMocks in VB.NET?