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

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

我使用最小起订量编写了单元测试。设置模拟时,我试图在 Linq 查询中创建 class 的对象。之后,我尝试 运行 单元测试,但出现以下错误消息。

"When called from 'VisitMemberInit', rewriting a node of type 'System.Linq.Expressions.NewExpression' must return a non-null value of the same type. Alternatively, override 'VisitMemberInit' and change it to not visit children of this type."

我写了如下代码 -

    _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);