【发布时间】:2010-11-12 13:29:31
【问题描述】:
我正在尝试对使用成员资格提供程序更新用户详细信息的控制器操作进行单元测试。我正在使用到目前为止很容易使用的起订量。
问题是我似乎无法让它模拟对不返回任何内容的方法的调用。
<TestMethod()> _
Public Sub Can_Update_User()
' Arrange
_membershipService.Setup(Function(x) x.UpdateUser(It.IsAny(Of MembershipUser)))
Dim controller As New UsersController(_membershipService.Object, _roleProvider.Object, _supportWorksService.Object, _portalClientService.Object)
' Act
Dim result As ViewResult = controller.Edit("testUser", New FormCollection)
' Assert
Assert.AreEqual("Index", result.ViewName)
End Sub
mocked members service的设置无法编译,错误是:
重载解析失败,因为没有 可以使用可访问的“设置”调用 这些论点:
'公共职能 Setup(Of TResult)(表达式为 System.Linq.Expressions.Expression(的 System.Func(的 Services.IMembershipService, 结果)))作为 Moq.Language.Flow.ISetup(的 Services.IMembershipService, TResult)': 表达式不产生 一个值。
'公共功能设置(的 TResult)(表达式为 System.Linq.Expressions.Expression(的 System.Func(的 Services.IMembershipService, 结果)))作为 Moq.Language.Flow.ISetup(的 Services.IMembershipService, TResult)': 类型的数据类型 参数不能从 这些论点。指定数据 明确的类型可能会纠正这个 错误。
'公共职能 设置(表达式为 System.Linq.Expressions.Expression(的 System.Action(的 Services.IMembershipService))) 作为 Moq.Language.Flow.ISetup(的 服务.IMembershipService)': 表达式不产生值。
我错过了什么?每当我的类有我想要调用的方法时,我是否必须创建一个假类而不是使用 Moq?
编辑:
好的,一点点阅读表明这是由于 VB 在 VB 中使用必须有结果的 Function() 表示 lambdas 的方式。
有没有人找到解决此问题的方法,或者我将不得不放弃 Moq 以使用伪造方法?
【问题讨论】:
标签: vb.net unit-testing moq