Здравствуйте, Flem1234, Вы писали:
F>Есть старые бородатые веб-сервисы. Есть классы, которые их активно используют. Вопрос: F>Как протестировать эти классы?
Unit tests + AspNetDevelopmentServerAttribute + TryUrlRedirection
кажется слишком громоздким. F>Хотелось бы просто подпихнуть через конструктор или свойство заглушку, и посмотреть логику.
Сделать, чтобы классы использовали эти сервисы не напрямую, а через их интерфейс. А интерфейс в тестах подменять на моки.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Flem1234, Вы писали:
F>>Есть старые бородатые веб-сервисы. Есть классы, которые их активно используют. Вопрос: F>>Как протестировать эти классы?
Unit tests + AspNetDevelopmentServerAttribute + TryUrlRedirection
кажется слишком громоздким. F>>Хотелось бы просто подпихнуть через конструктор или свойство заглушку, и посмотреть логику.
L>Сделать, чтобы классы использовали эти сервисы не напрямую, а через их интерфейс. А интерфейс в тестах подменять на моки.
Но генерируемые классы не реализуют никаких интерфейсов =(
Они конечно партиал, и в отдельном файле можно дописать нужный интерфейс. Но при изменении (правда, оно происходит очень редко), придется менять еще и интерфейс.
Это конечно вариант, но все равно как-то не очень.
Здравствуйте, Flem1234, Вы писали:
L>>Сделать, чтобы классы использовали эти сервисы не напрямую, а через их интерфейс. А интерфейс в тестах подменять на моки.
F>Но генерируемые классы не реализуют никаких интерфейсов =( F>Они конечно партиал, и в отдельном файле можно дописать нужный интерфейс. Но при изменении (правда, оно происходит очень редко), придется менять еще и интерфейс. F>Это конечно вариант, но все равно как-то не очень.
Сделайте прокси, кот. будет реализовывать нужный интерфейс и пробрасывать вызовы к веб-сервису.
Лично я тестирую все вместе, т.е. не подсовываю вместо интерфейсов заглушку, а тестирую и работу локально установленного веб-сервиса.
Над веб-сервисом у меня есть обертка. Этой обертке в конструкторе можно передать урл веб-сервиса, ну я в тестах и подсовываю адрес локального веб-сервиса.
Если же такой подход вам не нравится, то делайте как написал Lloyd — это в общем-то стандартный подход — оборачиваете работу с веб-сервисом в прокси, реализующий интерфейс, и в тестах вместо настоящего прокси подсовываете мок, который возвращает что нужно.