[英]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.