У меня есть контроллер с именем «UserController» с методом «Пригласить». Мой контроллер имеет следующий метод переопределения:Единичные тесты - метод пользовательского контроллера
DBRepository _repository;
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
_repository = new DBRepository();
}
так, этот метод вызывается каждый раз, когда создается класс UserController.
Мой метод «Пригласить» имеет следующие строки:
var startTime = _repository.Get<AllowedTime>(p => p.TimeID == selectTimeStart.Value);
, но когда я пытаюсь вызвать этот метод с помощью метода Unit:
[TestMethod()]
[UrlToTest("http://localhost:6001/")]
public void InviteTest()
{
UserController target = new UserController(); // TODO: Initialize to an appropriate value
int? selectTimeStart = 57;
int? selectTimeEnd = 61;
Nullable<int> selectAttachToMeeting = new Nullable<int>(); // TODO: Initialize to an appropriate value
int InvitedUserID = 9; // TODO: Initialize to an appropriate value
UserInviteModel model = new UserInviteModel();
model.Comment = "BLA_BLA_BLA";
ActionResult expected = null; // TODO: Initialize to an appropriate value
ActionResult actual;
actual = target.Invite(selectTimeStart, selectTimeEnd, selectAttachToMeeting, InvitedUserID, model);
Assert.AreEqual(expected, actual);
Assert.Inconclusive("Verify the correctness of this test method.");
}
я получил ошибку «Ссылка не установлен. .. ". Я понимаю, почему это происходит (_repository имеет значение null, потому что метод Initialize не вызывается в моем случае, но как это сделать правильно?
Можете ли вы показать мне пример? –
@ user285336: К сожалению, это довольно обширная тема, и конкретная реализация в вашем случае будет зависеть от деталей вашей системы, которые выходят за рамки вопроса StackOverflow. Лучшее, что я могу предложить, - потратить некоторое время на изучение инъекций зависимостей и насмешек по отношению к Unit Tests. – StriplingWarrior