Nic*_*ick 6 vb.net unit-testing moq
我正在尝试对使用成员资格提供程序更新用户详细信息的控制器操作进行单元测试.我使用的Moq到目前为止一直很容易使用.
问题是我似乎无法模拟对不返回任何内容的方法的调用.
<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
Run Code Online (Sandbox Code Playgroud)
模拟的成员资格服务的设置将无法编译,错误是:
重载决策失败,因为无法使用以下参数调用可访问的"Setup":
'公共函数设置(Of TResult)(表达式为System.Linq.Expressions.Expression(Of System.Func(Of Services.IMembershipService,TResult)))作为Moq.Language.Flow.ISetup(Of Services.IMembershipService,TResult)' :表达式不会产生值.
'公共函数设置(Of TResult)(表达式为System.Linq.Expressions.Expression(Of System.Func(Of Services.IMembershipService,TResult)))作为Moq.Language.Flow.ISetup(Of Services.IMembershipService,TResult)' :无法从这些参数推断出类型参数的数据类型.明确指定数据类型可能会更正此错误.
'公共函数设置(表达式为System.Linq.Expressions.Expression(Of System.Action(Of Services.IMembershipService)))作为Moq.Language.Flow.ISetup(Of Services.IMembershipService)':表达式不生成值.
我错过了什么?我是否必须创建一个假类,而不是在我的班级有一个我想要调用它的方法时使用Moq?
编辑:
好吧,一点点阅读表明这是由于使用Function()必须有结果的lambda在VB中表达的方式.
有没有人为此找到了解决办法,还是我不得不放弃Moq伪造方法?
小智 8
在Visual Studio 2010中使用
serviceMock.Setup(Sub(c) c.MethodName(paramName))
Run Code Online (Sandbox Code Playgroud)
此外,请确保将模拟的实体(serviceMock)模拟为接口,或将MethodName声明为可重写.
| 归档时间: |
|
| 查看次数: |
8706 次 |
| 最近记录: |