Тестирование модуля Save с использованием шаблона MVP и RhinoMock - PullRequest
0 голосов
/ 08 июня 2011

Я пытаюсь получить лучшее покрытие кода с помощью своих юнит-тестов, и недавно я перешел на использование RhinoMock для своих нужд Mocking.

Но у меня возник вопрос о том, как написать конкретный юнит-тест,функция Save ().

У меня есть интерфейс IView с несколькими функциями для извлечения значений из представления (страница aspx), примерами являются GetUsername (), GetPassword (), GetAddress () и GetCountry ().

Когда пользователь нажимает кнопку отправки, я хочу иметь тесты, которые проверяют, действительно ли все эти функции вызываются.Итак, я написал этот тест:

    [TestMethod]
    public void MainController_Save_ShouldRetrieveLUsername()
    {
        //Initialize the IView and Controller
        InitViewAndController();

        //Trigger the Save function triggering the controller 
        //to collect information for storage
        _controller.Save();

        _view.AssertWasCalled(s => s.GetUsername(), o => o.Repeat.Once());
    }

Теперь, наконец, встает вопрос, учитывая, что aspx содержит 15 полей ввода, которые необходимо сохранить, есть ли лучший способ проверить это поведение, написав и поддержав 15 из нихтесты?С одной стороны, тест должен быть простым и оптимальным только для одного Assert, но 15 из этих функций кажутся ненужными.

1 Ответ

1 голос
/ 08 июня 2011

Вместо того, чтобы проверять, вызываются ли эти функции (они больше похожи на свойства, а не функции, кстати), вы должны проверить результаты функции Save. Вы должны относиться к своему тестовому коду больше как к черному ящику и стараться не вкладывать слишком много его внутренних знаний в свои тесты. Таким образом, ваши тесты будут менее хрупкими при изменении кода Save.

Google для " тестирования на основе состояния ".

...