«Ошибка вызова» и «настройки не совпадали» одновременно - PullRequest
0 голосов
/ 29 июня 2018

Я пишу некоторые юнит-тесты и издеваюсь над некоторыми частями. Я понимаю оба значения этих ошибок по отдельности. Моя проблема в том, что они происходят одновременно и для одного и того же метода, но я могу издеваться над другими методами того же класса. Это только один конкретный метод.

Я уже проверил, если:

  1. существует путаница с разными пространствами имен и одинаковыми именами классов
  2. существуют методы с одинаковыми именами, но разными сигнатурами
  3. насмешка происходит после вызова метода. Так выглядит тест. Я использую ту же структуру для других методов того же класса, и нет проблем:

    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)

одновременно. Есть идеи, почему это происходит?

...