Как я тестирую этот метод? - PullRequest
3 голосов
/ 09 апреля 2009

Мне нужно протестировать этот метод. Я использую moq в качестве основы для насмешек, если это поможет.

[AcceptVerbs(HttpVerbs.Get)]
public RedirectToRouteResult LogOff()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Post");
}

ура :) 1004 *

РЕДАКТИРОВАТЬ: Это была в основном FormsAuthentication, мне было интересно. Должен ли я даже проверять это? Я полагаю, мне нужно будет смоделировать личность, а затем проверить, что IsAuthenticated является ложным?

Ответы [ 2 ]

4 голосов
/ 09 апреля 2009

вы могли бы создать оболочку для FormsAuthentication и заглушить ее

formsAuthentication = mockery.Stub<IFormsAuthentication>();

и сделай что-нибудь подобное.

With.Mocks(mockery)
    .Expecting(() => Expect.Call(() => formsAuthentication.SignOut()))
    .Verify(() => controller.LogOff());

 /* Asserts to go here */

С точки зрения тестирования FormsAuthentication. Проверьте это где-нибудь еще, разделение проблем и все такое.

Тест для этого действия просто должен проверить, был ли вызван метод SignOut и произошло ли перенаправление. Помните, что вы тестируете действие, а не методы в действии. Вы бы не проверяли работу хранилища данных в действии «Отправить», вы бы все это высмеяли.

2 голосов
/ 29 декабря 2012

Вот как вы делаете это с Moq. Предполагается, что вы создали IFormsAuthentication в качестве оболочки:

[Test]
public void LogOffSignsUserOut()
{
   var controller = new MyController();
   var authMock = new Mock<IFormsAuthentication>();
   controller.Authentication = authMock.Object;   //inject your mock

   controller.LogOff()

   authMock.Verify(x=>x.SignOff(), Times.Once());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...