Модульное тестирование RedirectToReferrer() в Monorail

Я пытаюсь написать модульный тест для метода действия, который вызывает метод Controller.RedirectToReferrer(), но получаю сообщение «Нет доступного реферера».

Как я могу изолировать и издеваться над этим методом?


person Omer Rauchwerger    schedule 15.09.2008    source источник


Ответы (2)


Думали ли вы о создании тестового двойника?

person Chris Canal    schedule 15.09.2008
comment
Это может помочь, как и макет, я полагаю. Проблема в том, что метод PrepareController(), используемый в модульных тестах контроллера Monorail, уже создает заглушку, а объект Response неизменяем и не имеет установщика. Любые другие идеи? (Typemock не является дополнительным банкоматом) - person Omer Rauchwerger; 23.09.2008

В моей версии магистрали, с которой я работаю, r5299, мне пришлось сделать это, чтобы имитировать RedirectToReferrer. Я думаю, что это было изменено в последних коммитах, я не уверен.

[TestFixture]
public class LoginControllerTests : GenericBaseControllerTest<LoginController>
{
    private string referrer = "http://www.example.org";
    protected override IMockRequest BuildRequest()
    {
        var request = new StubRequest(Cookies);
        request.UrlReferrer = referrer;

        return request;
    }

    protected override IMockResponse BuildResponse(UrlInfo info)
    {
        var response = new StubResponse(info,
                                        new DefaultUrlBuilder(),
                                        new StubServerUtility(),
                                        new RouteMatch(),
                                        referrer);
        return response;
    }

и т.д.

Как ни странно, это ответ, который вам нужно приставать, чтобы заставить RedirectToReferrer работать. Пришлось ползать по источникам монорельса, чтобы разобраться.

person James Thigpen    schedule 26.09.2008