MODIFIED: код использует HttpRequest.InputStream для чтения тела запроса, его анализа и сохранения.Я хотел бы иметь возможность провести модульное тестирование этого класса, но я ничего не могу вставить в тело.Это возможно?Может быть, я мог бы как-то взломать класс A непосредственно отражением и установить для _body какое-то значение.
ДОБАВЛЕНО: вот упрощенный дизайн:
class A
{
private string _body;
public string Body { get { return _body; } }
public A(HttpRequest r)
{
{parse r and store data, i.e. query parameter, etc. }
_body = {read body from r.InputStream };
}
}
class B
{
public void ProcessRequest(HttpRequest r)
{
var c = new C(r);
ParseBody(c.Body);
}
}
Все хорошо, я действительно могу проверить ParseBodyесли это личное.Тем не менее, я являюсь юнит-тестировщиком класса А, и в этом проблема.Я могу сделать свойство Body R / W, но это нарушает инкапсуляцию, которую я ненавижу, потому что А должен быть инвариантным.