C # Visual Studio модульный тест, макетирование IP-адреса клиента - PullRequest
2 голосов
/ 21 апреля 2010

Я пишу некоторые модульные тесты и получаю исключение из моего реального кода при попытке сделать следующее:

string IPaddress = HttpContext.Current.Request.UserHostName.ToString();

Можно ли смоделировать IP-адрес, не переписывая мой код, чтобы принять IP-адрес в качестве параметра?

Спасибо!

1 Ответ

5 голосов
/ 21 апреля 2010

Взгляните на Внедрение зависимостей .

По сути, вы решаете такие проблемы, помещая данные в класс с помощью (например, в данном случае) класса «context» или «settings».

public interface IAppContext
{
  string GetIP();
}

Затем у вас есть реализация prod, которая делает реальные вещи, а также фальшивые или фальшивые в ваших тестах.

public class AppContext : IAppConext
{
  public string GetIP()
  {
    return HttpContext.Current.Request.UserHostName.ToString();
  }
}

Контекст приложения помещается в класс с использованием IP-адреса ...

Да, и, насколько я знаю, для любых выпусков VS нет встроенной насмешки, вам нужно проверить один из множества - Насмешек носорога , Moq .. . Здесь очень много! Также см. typemock , но для этого требуется другой подход.

ПК: -)

...