Как создать метод, который имеет параметры и должен что-то делать со списком - PullRequest
0 голосов
/ 19 октября 2010

Я установил тест, используя Moq 3.0. Мне нужно протестировать метод, который изменит значение в этой базе данных. Я использую ASP.NET MVC, поэтому я хочу проверить свой контроллер.

Я установил это

 // Generate an implementer of IProductsRepository at runtime using Moq
 var mockTareasRepos = new Mock<IRepository>();
 mockTareasRepos.Setup(x => x.ExecutedTask).Returns(tasks.AsQueryable());
 return mockTareasRepos.Object;

Мне нужно добавить новый метод, который получит идентификатор задачи и изменить значение поля в списке задач. Предположим, что значение, которое мне нужно изменить, это StartTime, то есть datetime, мне нужно установить значение null и мне нужно установить это значение повторных попыток плюс один.

это задача класса

public class {
     int taskId {get;set;}
     DateTime StartTime  {get;set;}
     int retrys {get;set;}
}

Как мне это сделать?

 mockTareasRepos.Setup(x => x.SetToExecuteTask(It.IsAny<int>()))

Надеюсь, вы понимаете, что мне нужно, Мой английский не очень хорош.

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Я полагаю, вы ищете метод Callback:

mockTareasRepos.Setup(x => x.RepositoryMethod(...))
    .Callback<IEnumerable<Task>>(tasks => /* modify tasks here */);
    .Returns(tasks.AsQueryable());
1 голос
/ 19 октября 2010

Если я правильно понял, вы хотите проверить, что после вызова метода вашего контроллера значение вашей базы данных должно быть обновлено.Вы издеваетесь над своим хранилищем, потому что не хотите настраивать тестовую базу данных, верно?Итак, ваш тест должен выглядеть примерно так:

mockTareasRepos.Setup(...) //Do the setup you need.
var controller = new YourController(mockTareasRepos);
controller.YourMethod();
mockTareasRepos.Verify(x => x.YourRepositoryUpdateMethod(It.IsAny<Task>, Times.Once())); 

Последняя строка будет проверять, вызывал ли ваш контроллер метод YourRepositoryUpdateMethod один раз.Делая это, вы проверяете, что ваш метод контроллера вызывает интерфейс Repository для обновления вашей базы данных.

Надеюсь, это поможет.Если это не то, что вы ищете, пожалуйста, дайте нам больше информации.

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