我的可测试函数使用EF.Find()
so,因为我发现我需要实现 find 的模拟。
似乎被编译的唯一代码是c#
testsContextMock.Setup(m => m.Find(It.IsAny<Type>(), It.IsAny<object[]>())) .Returns<object[]>(hashes => testsMock.Object.FirstOrDefault(u => u.hash == (string)hashes[0]))
其中testsContextMock
是Mock<DbContext>
对象,并且testsMock
是Mock<DbSet<MyEntity>>
。
但是完成此代码后我收到此错误
System.ArgumentException : Invalid callback. Setup on method with 2 parameter(s) cannot invoke callback with different number of parameters (1).
正如我假设发生这种情况的原因是调用的可测试方法签名Find()
是DbSet<MyEntity>.Find(params object[] keyValues)
和模拟方法的签名是DbContext.Find(Type entityType, params object[] keyValues)
。如果我尝试模拟其他重载,它会因编译器错误而失败 Argument 1: cannot convert from 'object[]' to 'System.Type'
慕妹3146593
相关分类