У меня проблема с насмешкой, потому что она продолжает вызывать исходную функцию. Это мой демонстрационный код
Первый файл - это интерфейс, содержащий функцию, которую я хочу смоделировать.
public interface IDemoReplace
{
int FunctionToBeReplaced();
}
Второй файл - это класс, который фактически имеет реализацию для функции
public class DemoReplace : IDemoReplace
{
public int FunctionToBeReplaced()
{
//this function contains sql query in my real project
return 1;
}
}
Третий файл - это класс, который я хочу проверить
public class ClassToBeTested
{
public int TestThisFunction()
{
IDemoReplace replace = new DemoReplace();
var temp = replace.FunctionToBeReplaced();
return temp;
}
}
Последний файл - это класс теста
public class TestClass
{
[Fact]
public void TryTest()
{
using (var mock = AutoMock.GetLoose()) {
//Arrange
mock.Mock<IDemoReplace>()
.Setup(x => x.FunctionToBeReplaced())
.Returns(returnTwo());
var classToBeTested = mock.Create<ClassToBeTested>();
var expected = 2;
//Act
var actual = classToBeTested.TestThisFunction();
//Assert
Assert.Equal(expected, actual);
}
}
public int returnTwo() {
return 2;
}
}
Этот тест не пройден с ожидаемым значением 2 и фактическое значение равно 1. Когда я пытался отладить, он не вызывает returnTwo
, а вместо этого вызывает исходную функцию.
Я новичок в модульном тестировании, так что я пропустил? Пожалуйста, учтите, что приведенный выше код является лишь демонстрацией того, что произошло в моем реальном проекте. FunctionToBeReplaced
на самом деле функция, которая выполняет и возвращает запись из базы данных, поэтому я хочу смоделировать эту функцию.
Спасибо:)