web services + тестирование
От: Flem1234  
Дата: 21.09.10 15:59
Оценка:
Есть старые бородатые веб-сервисы. Есть классы, которые их активно используют. Вопрос:
Как протестировать эти классы?
 Unit tests + AspNetDevelopmentServerAttribute + TryUrlRedirection
кажется слишком громоздким.
Хотелось бы просто подпихнуть через конструктор или свойство заглушку, и посмотреть логику.
Re: web services + тестирование
От: Lloyd Россия  
Дата: 21.09.10 16:01
Оценка: +1
Здравствуйте, Flem1234, Вы писали:

F>Есть старые бородатые веб-сервисы. Есть классы, которые их активно используют. Вопрос:

F>Как протестировать эти классы?
 Unit tests + AspNetDevelopmentServerAttribute + TryUrlRedirection
кажется слишком громоздким.

F>Хотелось бы просто подпихнуть через конструктор или свойство заглушку, и посмотреть логику.

Сделать, чтобы классы использовали эти сервисы не напрямую, а через их интерфейс. А интерфейс в тестах подменять на моки.
Re[2]: web services + тестирование
От: Flem1234  
Дата: 21.09.10 16:08
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Flem1234, Вы писали:


F>>Есть старые бородатые веб-сервисы. Есть классы, которые их активно используют. Вопрос:

F>>Как протестировать эти классы?
 Unit tests + AspNetDevelopmentServerAttribute + TryUrlRedirection
кажется слишком громоздким.

F>>Хотелось бы просто подпихнуть через конструктор или свойство заглушку, и посмотреть логику.

L>Сделать, чтобы классы использовали эти сервисы не напрямую, а через их интерфейс. А интерфейс в тестах подменять на моки.


Но генерируемые классы не реализуют никаких интерфейсов =(
Они конечно партиал, и в отдельном файле можно дописать нужный интерфейс. Но при изменении (правда, оно происходит очень редко), придется менять еще и интерфейс.
Это конечно вариант, но все равно как-то не очень.
Re[3]: web services + тестирование
От: Lloyd Россия  
Дата: 21.09.10 16:10
Оценка: 1 (1) +1
Здравствуйте, Flem1234, Вы писали:

L>>Сделать, чтобы классы использовали эти сервисы не напрямую, а через их интерфейс. А интерфейс в тестах подменять на моки.


F>Но генерируемые классы не реализуют никаких интерфейсов =(

F>Они конечно партиал, и в отдельном файле можно дописать нужный интерфейс. Но при изменении (правда, оно происходит очень редко), придется менять еще и интерфейс.
F>Это конечно вариант, но все равно как-то не очень.

Сделайте прокси, кот. будет реализовывать нужный интерфейс и пробрасывать вызовы к веб-сервису.
Re: web services + тестирование
От: MozgC США http://nightcoder.livejournal.com
Дата: 21.09.10 16:48
Оценка:
Лично я тестирую все вместе, т.е. не подсовываю вместо интерфейсов заглушку, а тестирую и работу локально установленного веб-сервиса.
Над веб-сервисом у меня есть обертка. Этой обертке в конструкторе можно передать урл веб-сервиса, ну я в тестах и подсовываю адрес локального веб-сервиса.

Если же такой подход вам не нравится, то делайте как написал Lloyd — это в общем-то стандартный подход — оборачиваете работу с веб-сервисом в прокси, реализующий интерфейс, и в тестах вместо настоящего прокси подсовываете мок, который возвращает что нужно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.