我正在使用Rhino Mocks和nUnit来尝试在对象上测试我的函数IsApprovable()
。我正在测试的函数依赖于另一个需要传入的对象“UserManager”。我试图模拟UserManager的一个实例,这样我就可以指定另一个函数的结果GetApproverDependantsList()
我的问题是,当我模拟对象并将其传递给我正在测试的函数时,我得到以下InvalidCastException:
无法将类型为“Castle.Proxies.IUserManagerProxye15b431a53ca4190b7ffbdf5e241e2bb”的对象转换为“MyNamespace.Users.UserManager”。
我是新手,所以我不确定我是否正确地做事......以下是我正在使用的示例代码:
Dim helper As New BookingManagerHelper()
Dim booking As Booking = GetDummyBooking() 'method to get a booking in suitable state
Dim parameters As Collection(Of Parameter) = GetDummyParameters() 'factory method, as above
Dim mockedUserManager = MockRepository.GenerateMock(Of Users.IUserManager)()
'I have created a dummy function called GetUserCollectionWithDependant() to create the results I need the mocked function to return...
mockedUserManager.Stub(Function(x) x.GetApproverDependantsList(-1)).[Return](GetUserCollectionWithDependant(1))
'It's the line below where I find my exception...
Assert.AreEqual(True, helper.IsApprovable(booking, mockedUserManager, parameters))
我试图测试的功能如下所示:
Public Function IsApprovable(ByVal Booking As Booking , ByVal UserManager As Users.UserManager, Optional ByVal Parameters As Collection(Of Parameter) = Nothing) As Boolean
'various logic checks are performed on the objects passed in
End Function
有些注意事项:
如果需要,我可以发布更多代码。提前谢谢。
答案 0 :(得分:1)
我不是VB.NET的专家,但是IsApprovable
需要一个UserManager
实例。模拟的类型为IUserManager
。您可能希望调整IsApprovable
以使用IUserManager
实例。