我正在编写一些单元测试并模拟某些部分。我分别理解这些错误的两种含义。我的问题是它们同时出现在同一方法中,但是我可以模拟同一类的其他方法。只是一种特定的方法。
我已经检查过:
在方法调用之后发生了模拟。这就是测试的样子。我对相同类的其他方法使用相同的结构,并且没有问题:
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)
同时。 任何想法为什么会这样?