Как мне протестировать сторонний фреймворк, когда мне нужно передать HttpResponse? - PullRequest
1 голос
/ 09 октября 2009

У меня есть сторонний фреймворк, который я использую, чтобы выписать документ Excel и заставить его загрузить его.

Проблема заключается в том, что пользователь пытается экспортировать большое количество записей и выдает исключение OutOfMemoryException.

Я пытаюсь написать тест, чтобы убедиться, что это происходит в сторонней платформе, а не в моем коде, но метод Save принимает объект HttpResponse в качестве одного из методов.

Как я могу получить / mock / любой объект HttpResponse для передачи?

Пример использования:

excel.Save("test.xls", 
    OpenType.OpenInExcel, 
    FileType.Excel2003,
    HttpContext.Current.Response);

Очевидно, что HttpContext.Current.Reponse не работает в модульном тесте, поэтому моя проблема.

Ответы [ 2 ]

2 голосов
/ 09 октября 2009

HttpRequestBase из .Net 3.5 с пакетом обновления 1 (SP1) разработан для этой цели, но он не принесет вам пользы, если его не использует сторонний код. (это заменитель, поэтому его не сложно использовать)

Если другой код не использует его, вы можете попробовать разместить код в Cassini и запросить его по HTTP.

1 голос
/ 09 октября 2009

[Отказ от ответственности: я работаю в Typemock]

Вам не нужно иметь фактический объект HttpResponse, вместо этого используйте Изолятор , чтобы создать поддельный экземпляр типа HttpResponse и вернуть его при HttpContext.Current.Response называется:

var fake = Isolate.Fake.Instance<HttpResponse>();
Isolate.WhenCalled(() => HttpContext.Current.Response).WillReturn(fake);

Вы можете установить свойства поддельного объекта и изменить его поведение, используя Isolate.WhenCalled .

Достоинство этого подхода в том, что вам не нужно устанавливать сложную среду, фактически вы можете использовать этот код в простом модульном тесте.

...