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);
我使用最小起订量编写了单元测试。设置模拟时,我试图在 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);