我正在尝试创建一个类似于我在C#中完成一个单元测试的单元测试,但我正在与vb中的lambdas进行斗争。
基本上我正在尝试模拟一个类,然后创建一个存根并返回。在C#中我会做类似的事情;
MockedPersonRepository
.Stub(x => x.Find(id))
.Return(person)
但是在visual basic中我试图做类似的事情,但无法解决语法
MockedPersonRepository.Stub(Function... argh!!!
任何关于如何重现上述内容的建议都将非常感谢!
亲切的问候, DOM
答案 0 :(得分:3)
我通常展示的一个简单示例(因为我也是VB开发人员)如下所示:(由于VB中的某些奇怪原因,您需要将其拉出到另一个不返回任何内容的函数中)
<TestMethod()> _
Public Sub Should_Call_Into_Repository_For_GetAllUsers()
Dim Repository As IUserRepository = MockRepository.GenerateStub(Of IUserRepository)()
Dim Service As IUserService = New UserService(Repository)
Service.GetAllUserCollection()
Repository.AssertWasCalled(Function(x) Wrap_GetAllUserCollection(x))
End Sub
Function Wrap_GetAllUserCollection(ByVal Repository As IUserRepository) As Object
Repository.GetAllUserCollection()
Return Nothing
End Function
以上是基于交互的测试,下面可能更接近您当前示例中的内容
Dim StubUserObject As New User(1, "9999", "jdoe", "John", "Doe", 1)
UserService.Stub(Function(x) x.GetUserByID(1)).[Return](StubUserObject)
答案 1 :(得分:0)
这样的事情会起作用吗?
MockedPersonRepository_
.Stub(Function(x) x.Find(id))_
.[Return](person)