2009-04-09 1 views
3

Мне нужно проверить этот метод. Я использую moq как мою фальшивую структуру, если это помогает.Как измерить этот метод?

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

веселит :)

EDIT: Это было в основном FormsAuthentication мне было интересно. Должен ли я даже тестировать это? Полагаю, мне нужно было бы макет Identity, а затем проверить IsAuthenticated - false?

ответ

2

Так вы делаете это с помощью 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()); 
} 
4

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

formsAuthentication = mockery.Stub<IFormsAuthentication>(); 

и сделать что-то вроде этого.

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

/* Asserts to go here */ 

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

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

+0

так ... Надо было сказать, что это делается с Rhino Mocks ..... но принцип точно такой же –

+0

блин. Я просто не могу понять, как это сделать с помощью MOQ :( –

+0

извините, не может помочь вам, поскольку у меня нет опыта работы с MOQ. –

Смежные вопросы