Я тестирую статический метод, который строит строку URL после проверки прокси и имен хостов и всех видов вещей. Этот метод использует внутренний флаг System.Net.Sockets.Socket.OSSupportsIPv6
. Поскольку это статично, я не могу издеваться над этой зависимостью.Как выполнить единичный тест для конкретного поведения машины?
EDIT: (Это упростило много ... Я не могу изменить структуру метода с флагом, чтобы принять true/false).
На машинах разработки XP метод под вопросом возвращает прогнозируемый результат строки (в данном случае http://hostname/ ....). Наш сервер сборки, поддерживающий IPv6, возвращает совершенно другой результат (он дает мне что-то вроде http://192.168.0.1:80/....). Пожалуйста, не спрашивайте, почему - дело в том, что существуют два разных типа вывода, которые различаются в зависимости от операционной системы.
Тест должен подтвердить, что верное имя хоста или IP-адрес действительны. Выходы легко проверить. Проблема в том, что я могу получить только один из возможных выходов, в зависимости от того, на какой машине выполняется тест.
Какова наилучшая практика для написания теста в этом случае? Я помещаю оператор if в свой тест, который проверяет флаг, а затем ищет два разных выхода? Это, кажется, схематично мне, потому что
тест ведет себя по-разному в зависимости от окружающей среды, это запустить в
Я в основном, соединяющего тест методы, потому что вы должны знать внутренности метода до устанавливают два случая.
Я устанавливаю два теста, по одному для каждой среды, которые просто проходят, если они находятся в неправильной среде? Я пишу какое-то сложное регулярное выражение, которое может выделить, какой результат он получил, и использовать больше, если/else логику, чтобы проверить его?
Любые предложения помогут!
Ну, это значит, что сайты вызовов трудно проверить ... в основном он передает доллар. Это * может * не быть проблемой, по общему признанию ... –
Это определенно было бы идеальным. Я на самом деле упростил его, есть несколько внешних вызовов, и флаг, на который он опирается, фактически находится в .dll. Я не контролирую. – womp
Я вижу. Полагаю, что это позор. – mquander