【发布时间】:2017-05-19 15:17:35
【问题描述】:
我正在尝试为自定义 MultipartMemoryStreamProvider 编写测试 - 一个与 MultipartFormDataMemoryStreamProvider.cs 非常相似的测试
特别是,我正在尝试测试我自己的GetStream(HttpContent parent, HttpContentHeaders headers) 方法的实现。
它需要一个 HttpContent 和 HttpContentHeaders。
为了实现这一点,我尝试创建一个控制器上下文和控制器,然后从该控制器请求中传递适当的属性。
事实上,我已经尝试实现这个(重复)问题的答案:Testing a Web API method that uses HttpContext.Current.Request.Files?
我尝试的所有结果都导致标题上的Content-Disposition 为null,如下图所示:
知道我错过了什么吗?
为了代码,这里是代码的副本。您会注意到它与另一个问题的答案相同。我就是无法通过 null content-disposition。
var content = new ByteArrayContent(new Byte[100]);
content.Headers.Add("Content-Disposition", "form-data");
var controllerContext = new HttpControllerContext
{
Request = new HttpRequestMessage
{
Content = new MultipartContent { content }
}
};
var controller = new MockController();
controller.ControllerContext = controllerContext;
MockController 很简单:
public class MockController : ApiController { }
【问题讨论】:
-
为什么您希望
Content-Disposition在MultipartContent上可用,而您在ByteArrayContent上设置它? -
显然是因为我很愚蠢,哈哈——我觉得我已经尝试过了,这就是导致我发现另一个答案说把它放在
ByteArrayContent上的原因——不知道我怎么弄错了第一位,虽然现在可以了。谢谢! :) -
很高兴它有帮助:)。如果您无论如何都开始奖金,我想我会创建一个答案。
-
当然,去吧:)
标签: c# unit-testing