【问题标题】:InvalidCastException when passing a mocked dependency into a function将模拟依赖项传递给函数时出现 InvalidCastException
【发布时间】:2013-09-30 10:17:01
【问题描述】:

我正在使用 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

注意事项:

  • UserManager 实现接口 IUserManager
  • UserManager 包含接口未定义的附加属性和函数
  • UserManager 也继承自基类(是否需要覆盖基类属性?)

如果需要,我可以发布更多代码。提前致谢。

【问题讨论】:

    标签: vb.net nunit rhino-mocks .net


    【解决方案1】:

    我不是 VB.NET 方面的专家,但 IsApprovable 需要一个 UserManager 实例。模拟的类型为IUserManager。也许您想调整 IsApprovable 以使用 IUserManager 实例。

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2016-05-30
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多