繁体   English   中英

在c#中运行单元测试时如何处理InvalidoperationException

[英]How to handle Invalidoperationexception when run the unit test in c#

我使用 MOQ 编写了单元测试。 设置模拟时,我试图在 Linq 查询中创建类的对象。 之后,我尝试运行单元测试,但收到以下错误消息。

“当从 'VisitMemberInit' 调用时,重写类型为 'System.Linq.Expressions.NewExpression' 的节点必须返回相同类型的非空值。或者,覆盖 'VisitMemberInit' 并将其更改为不访问此类型的子节点.”

我写了如下代码 -

    _mockLdapAuthenticatorService.Setup(x => x.Authenticate(
                        new LoginRequest { 
                                Username = It.IsAny<string>(), 
                                Password = It.IsAny<string>() })).
                                Returns(new     AuthenticationResult { Success = true });

更新设置。 以下可能是您想要实现的目标。

_mockLdapAuthenticatorService
   .Setup(x => x.Authenticate(It.IsAny<LoginRequest>()))
   .Returns(new AuthenticationResult { Success = true });

对我来说,一个问题是在向函数发送参数时这个新操作符。 当我为它创建一个变量然后将该变量作为参数发送时,它可以正常工作。

不:

 var absentUser = _fixture.Create<User>();
  var absentUsers = new List<User> { absentUser }.AsQueryable();
  _unitOfWorkMock.Setup(_ => _.UserRepository
  .GetAllConfirmedUsersForGroupIds(new List<int> { It.IsAny<int>() }))
                   .Returns(absentUsers);

是的:

var absentUser = _fixture.Create<User>();
 var absentUsers = new List<User> { absentUser }.AsQueryable();
 var groupIds = new List<int> { It.IsAny<int>() };
 _unitOfWorkMock.Setup(_ => _.UserRepository.GetAllConfirmedUsersForGroupIds(groupIds))
                   .Returns(absentUsers);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM