Тестирование Response.SetCookie () с MvcContrib - PullRequest
2 голосов
/ 30 января 2012

В своем действии контроллера я установил Cookie с помощью метода Response.SetCookie (myCookie).В моем модульном тестовом методе я хотел бы использовать Mock или лучше Stub для проверки правильности всех параметров.Я использую MvcContrib TestHelper для настройки HttpContext, но я не знаю, как передать ему мой поддельный объект Response.Я использую Moq и MvcContrib.

1 Ответ

1 голос
/ 04 июля 2012

Вам нужно самостоятельно смоделировать свойство HttpContext в TestControllerBuilder. HttContext помечен как защищенный, поэтому ваш тестовый класс должен наследовать от TestControllerBuilder, чтобы иметь возможность его установить. Я сделал это так:

[TestClass]
public class SampleTest : TestControllerBuilder
{
    [TestMethod]
    public void TestLogOnActionSetsCookie()
    {
        var httpContextMock = new Mock<HttpContextBase>();
        var responseMock = new Mock<HttpResponseBase>();
        httpContextMock.Setup(c => c.Response)
            .Returns(responseMock.Object);

        responseMock
                .Setup(r => r.SetCookie(It.IsAny<HttpCookie>()))
                .Verifiable();

        var controller = new AccountController();

        base.HttpContext = httpContextMock.Object;
        base.InitializeController(controller);

        controller.LogOn();

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