Правильно ли я поступаю?И если да, правильно ли я понимаю?Я немного запутался.
Мой проект состоит из трех разных слоев.Уровень пользовательского интерфейса, бизнес-уровень и уровень доступа к данным.Бизнес-уровень и уровень доступа к данным построены на основе интерфейсов.
Я пытаюсь написать модульные тесты, используя NUnit и Moq.
Вот мой пример.Я хочу протестировать GetSum (int x, int y), которая является простой функцией, которая просто возвращает x + y.Эта функция существует в CalculatorLogic и реализует ICalculatorLogic.
public class CalculatorLogic : ICalculatorLogic
{
public int GetSum(int x, int y)
{
return x + y;
}
}
Теперь вот как я пытаюсь написать UnitTest.
[TestFixture]
public class CalculatorLogicTests
{
Mock<ICalculatorLogic> calculatorLogicMock;
ICalculatorLogic calculatorLogic;
public CalculatorLogicTests()
{
calculatorLogicMock = new Mock<ICalculatorLogic>();
// now i need to do this setup, right?
calculatorLogicMock.Setup(x => x.GetSum(It.IsAny<int>(), It.IsAny<int>())).Returns(6);
calculatorLogic = calculatorLogicMock.Object;
}
[Test]
public void GetSum_Test()
{
int expectedResult = 3 + 3;
var sum = calculatorLogic.GetSum(3, 3);
Assert.AreEqual(sum, expectedResult);
}
}
Теперь вышесказанное проходит.Он работает, и он получает то, что я ожидаю.Тем не менее, он чувствует себя неправильно.Он просто возвращает все, что я установил для возврата в вызове Setup ().Если бы я поставил 3 в Returns () вместо 6, он потерпел бы неудачу.
Я должен понять, что-то не так.Иначе, действительно ли я проверяю свою функцию, если я говорю, что возвращать?