我的单元测试中有这样的东西
public class MyTestClass()
{
private Mock<IAccountRepo> accountRepo;
private AdminService adminService;
[Setup]
public void Setup()
{
accountRepo = fixture.Freeze<Mock<IAccountRepo>>();
adminService = fixture.CreateAnonymous<AdminService>();
}
[Test]
public Test()
{
accountRepo.Setup(x => x.Insert(It.IsAny<IUnitOfWork>(), It.IsAny<MyDomainObject>()));
adminService.ApplyAdminFee(1, 1, today);
accountRepo.Verify(x => x.Insert(It.IsAny<IUnitOfWork>(), It.Is<MyDomainObject>(a => a.Id == 1)));
}
}
我得到这个错误。
System.NullReferenceException was unhandled by user code
Message=Object reference not set to an instance of an object.
Source=Anonymously Hosted DynamicMethods Assembly
StackTrace:
at lambda_method(Closure , MyDomainObject )
at Moq.It.<>c__DisplayClass2`1.<Is>b__1(TValue value)
at Moq.Match`1.Matches(Object value)
at Moq.Matcher.Matches(Object value)
at Moq.MethodCall.Matches(IInvocation call)
at Moq.Mock.<>c__DisplayClassc.<VerifyCalls>b__b(IInvocation i)
at System.Linq.Enumerable.WhereListIterator`1.MoveNext()
at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source)
at Moq.Mock.VerifyCalls(Interceptor targetInterceptor, MethodCall expected, Expression expression, Times times)
at Moq.Mock.Verify[T](Mock mock, Expression`1 expression, Times times, String failMessage)
at Moq.Mock`1.Verify(Expression`1 expression, Times times)
at Test() in 383
InnerException:
我不确定为什么。
编辑
我想我知道发生了什么。在我的方法中,我有 3 次调用 insert 方法(insert 方法接受一个对象)。
所以我喜欢
accountRepo.Insert(MyDomainObject);
accountRepo.Insert(MyOtherDomainObject);
accountRepo.Insert(MyOtherOtherDomainObject);
那么也许这两个其他插入会覆盖它?我怎样才能解决这个问题?