Moq C# вызов метода для тестирования - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в Тестировании в C#, и я пытаюсь протестировать метод, который только увеличивает некоторое переданное целое число (когда он вызывается с 5, он возвращает 6). Что я здесь не так делаю? result всегда равно 0.

public void TestMethod2()
        {
            //Act
            int numberToCheck = 5;
            mock.CallBase = true;
            mock.Setup(x => x.CalculateTest(numberToCheck)).Returns(6);
            int result = mock.Object.CalculateTest(It.IsAny<int>());
            int expected = numberToCheck + 1;

            //Assert
            Assert.AreEqual(expected, result);
        }

1 Ответ

1 голос
/ 21 апреля 2020

Ваш тест кажется немного бессмысленным. Похоже, вы издеваетесь над тем, что вы хотите проверить. Как правило, все остальное вы пытаетесь смоделировать вокруг того, что вы хотите протестировать, примерно так:

//This is normally something like a repository that you link to from a service.
//You want the repo to return mocked data so you can see what your service method
//actually does in a set circumstance.
private Mock<ISomethingEffectingYourTestsToMock> _myMockObject; 
private IMyServiceUnderTest _sut;

[TestInitialize]
public void Init()
{
    _myMockObject = new Mock<ISomethingEffectingYourTestToMock>(); //mock
    _sut = new MyServiceUnderTest(your parameters); //real instance
}

[TestMethod]
public void SomeOtherMethod_should_return_23_if_input_is_20()
{
    var mockRepoOutput = 6;
    this._myMockObject.Setup(r => r.someMethod(It.IsAny<int>())).Returns(mockRepoOutput);

    var inputParam = 20;
    var expectedResult = 23;

    var result = _sut.SomeOtherMethod(inputParam);

    Assert.AreEqual(expectedResult, result);
}

Что нужно учитывать при начале написания набора модульных тестов, такие как общие фиктивные данные, mock setup et c. Вы можете сэкономить много времени, если вам не нужно настраивать фиктивные объекты данных в каждом тесте, а вместо этого можете просто вызвать метод, чтобы получить то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...