我使用MOQ编写了单元测试。设置模拟我试图在Linq查询中创建类的对象。之后,我试图运行单元测试,但我得到以下错误消息。
"从' VisitMemberInit'调用时,重写类型的节点 ' System.Linq.Expressions.NewExpression'必须返回非null值 相同类型。或者,覆盖' VisitMemberInit'并改变 它不会访问这种类型的孩子。"
我写了如下代码 -
_mockLdapAuthenticatorService.Setup(x => x.Authenticate(
new LoginRequest {
Username = It.IsAny<string>(),
Password = It.IsAny<string>() })).
Returns(new AuthenticationResult { Success = true });
答案 0 :(得分:4)
更新设置。以下可能是您想要实现的目标。
_mockLdapAuthenticatorService
.Setup(x => x.Authenticate(It.IsAny<LoginRequest>()))
.Returns(new AuthenticationResult { Success = true });
答案 1 :(得分:0)
对我来说,一个问题是当向函数发送参数时,这个新运算符。当我为它创建一个变量然后将其作为参数发送时,它可以正常工作。
否:
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);