我的可测试函数使用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'
慕田峪9158850
慕妹3146593
随时随地看视频慕课网APP
相关分类