使用Moq模拟VB.NET方法
我正在尝试对使用成员资格提供程序更新用户详细信息的控制器操作进行单元测试.我使用的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 模拟的成员资格服务的设置将无法编译,错误是:
我错过了什么?我是否必须创建一个假类,而不是在我的班级有一个我想要调用它的方法时使用Moq? 编辑: 好吧,一点点阅读表明这是由于使用Function()必须有结果的lambda在VB中表达的方式. 有没有人为此找到了解决办法,还是我不得不放弃Moq伪造方法?
正如您所发现的,当前版本的VB.NET(VB9)只允许返回值的lambda方法(即函数lambdas).除了
create a function to return a dummy value之外,你没有什么可以做的.我现在无法测试它,所以我不确定这是一个可行的解决方案.
在next version of VB.NET(VB10)中,该语言将支持Sub lambdas,并应在这些情况下提供帮助. 似乎其他人也与目前的Moq / VB.NET组合有不同程度的having trouble. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |