Rhino Mocks Stub Метод не работает - PullRequest
3 голосов
/ 24 июня 2011

Почему этот метод не работает?Я продолжаю получать требует возвращаемое значение или исключение, чтобы бросить.

public AuthenticateResponse Authenticate(string username, string password)
        {
            string response = GetResponse(GetUrl(username, password).ToString());

            return ParseResponse(response);
        }


        [TestMethod()]
        [ExpectedException(typeof(XmlException))]
        public void Authenticate_BadXml_ReturnException()
        {
            MockRepository mockRepository = new MockRepository();
            SSO sso = mockRepository.Stub<SSO>();

            sso.Stub(t => t.GetResponse("")).Return("<test>d");

            AuthenticateResponse response = sso.Authenticate("test", "test");
        }

Ответы [ 3 ]

3 голосов
/ 26 июня 2011

Ваш репозиторий все еще находится в режиме записи. Вы смешиваете семантику записи / воспроизведения («старый» способ ведения дел) с более новым стилем AAA (упорядочение / действие / утверждение).

Вместо того, чтобы создавать свой собственный репозиторий, просто используйте:

var sso = MockRepository.GeneateStub<SSO>();

Теперь все должно работать нормально.

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

Ваша последняя строка вызывает метод Authenticate для вашего объекта-заглушки, вы не настроили возврат, значение или исключение для выброса при его вызове, поэтому Rhino Mocks не знает, что заглушка должна делать, и это вызывает ошибку. Вы, вероятно, не хотите вызывать метод в своей заглушке - мне это кажется бессмысленным, есть ли другой объект (который вы на самом деле тестируете в этом тесте), на котором вы должны вызывать метод?

0 голосов
/ 26 июня 2011

Это весь твой тест? Если это так, ваш тест не имеет смысла. Единственный объект в вашем тесте - тот, который вы окаменели. Где объект теста?

Если вы пытаетесь протестировать класс SSO, вы абсолютно никогда не хотите его смутить / заглушить. Если у единого входа есть одна или несколько зависимостей, используйте макетную среду для настройки стандартных взаимодействий между этими зависимостями и вашей SUT. Это точное назначение насмешливого фреймворка.

...