Я пытаюсь написать модульные тесты для моего действия контроллера.
Я использую NUnit 3 и Moq.
У меня есть методы Db, такие как Add () и Remove () в действии.
Я понимаю, что мне нужно смоделировать Db и настроить возвращаемые значения для методов соответственно.
Однако, когда дело доходит до таких методов, как db.Add (), db.Remove (), db.SaveChanges (); Я не понимаю, как установить истинные и ложные возвращаемые значения для одного и того же.
Мои действия для проверки:
[HttpPost]
[Route("Add")]
public List<string> Add([FromBody]model addModel)
{
List<string> errors = new List<string>();
try
{
model Model= new model()
{
propertyA = addModel.propertyA
};
db.Add(Model);
db.SaveChanges();
}
catch (Exception e)
{
errors.Add(e.Message);
return errors;
}
errors.Add("Success");
return errors;
}
Чтобы написать положительные и отрицательные тесты для вышеуказанных методов, мне нужно иметь возможность устанавливать положительные и отрицательные возвращаемые значения для методов db.Add () и db.SaveChanges ().
Я пробовал следующее:
[TestCase]
public void Add_Succesfull_True()
{
Mock<DbContext> mockdb = new Mock<DbContext>();
var model= db.model.Select(x => x).FirstOrDefault();
model addModel = new model()
{
propertyA= model.propertyA
};
AuthController authController = new AuthController(userManager, configuration, mockdb.Object);
var apiEndPoint = authController.Add(addModel);
mockdb.Setup(x => x.Add(addModel)).Returns(??);
Assert.IsTrue(apiEndPoint.Contains("Success"));
}
Через intellisense я вижу, что db.Add () ожидает тип возврата
Microsoft.EntityFrameworkCore.ChangeTracking.
Мое понимание насмешек над DbContext таково:
- Макет интерфейса DbContext.
- Добавить, удалить, сохранить и т. Д. - это всего лишь методы, которые не имеют реализации при имитации.
- мы настраиваем функцию и указываем возвращаемое значение по мере необходимости для контрольного примера, который заменяет собой реализацию.
Мне кажется, я неправильно высмеял вышесказанное.
Нужно направление спасибо :) 1033 *