c# - “调用失败”和“设置不匹配”同时出现
问题描述
我正在编写一些单元测试并模拟一些部分。我分别理解这些错误的含义。我的问题是它们同时发生并且针对相同的方法,但我可以模拟同一类的其他方法。这只是一种特殊的方法。
我已经检查过:
- 不同的命名空间和相同的类名存在混淆
- 有相同名称但不同签名的方法
模拟发生在方法调用之后。这就是测试的样子。我对同一类的其他方法使用相同的结构,没有问题:
private readonly Mock<IDependency> mockDependency; [Fact] public void GetSomeThingByIdTest() { SetupMock(); ITestedInterface testedClass = CreateTestedImpl(); ISomeThing expected = new SomeThing(); ISomeThing mocked = testedClass.GetSomeThingById("someId"); Assert.Equal(expected, mocked); } private void SetupMock() { var mockSomeThing = new Mock<ISomeThing>(); mockDependency.Setup(x => x.GetSomeThingById("someId")).Returns(mockSomeThing.Object); } private ITestedInterface CreateTestedImpl() => new Tested(mockDependency.Object);
我得到:
Moq.MockException ITestedInterface.GetSomeThingById(someId) 调用失败,模拟行为严格。
和
Moq.MockException 以下设置不匹配: ITestedInterfacex => x.GetSomeThingById(someId)
同时。任何想法为什么会发生这种情况?
解决方案
推荐阅读
- yarnpkg - 无法“纱线”升级到@react-native-firebase/firestore@7.3.0
- android - 如何允许谷歌播放服务(FCM 推送通知)在受限网络中运行
- python-3.x - 刚开始使用 Python 并使用 Python 完成自动化无聊的工作。关于清理我的代码有什么建议吗?
- zsh - fzf / neovim:ls 结果中的奇怪字符
- docker - 无法从 docker 容器连接到 localdb
- mysql - 来自mysql的树枝
- java - Cardview 宽度与父级不匹配
- spring-mvc - 如何避免 com.google.gson.JsonObject 和 com.fasterxml.jackson.databind.ObjectMapper 之间的 JSON 转换错误
- python - 如何使用 JSON python 创建一个包含列表的动态字典?
- mysql - 在 with 子句之后创建视图