Я пишу некоторые юнит-тесты и издеваюсь над некоторыми частями. Я понимаю оба значения этих ошибок по отдельности. Моя проблема в том, что они происходят одновременно и для одного и того же метода, но я могу издеваться над другими методами того же класса. Это только один конкретный метод.
Я уже проверил, если:
- существует путаница с разными пространствами имен и одинаковыми именами классов
- существуют методы с одинаковыми именами, но разными сигнатурами
насмешка происходит после вызова метода. Так выглядит тест. Я использую ту же структуру для других методов того же класса, и нет проблем:
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) с имитационным поведением Strict.
и
Moq.MockException
Следующие настройки не были сопоставлены:
ITestedInterfacex => x.GetSomeThingById (someId)
одновременно.
Есть идеи, почему это происходит?