【问题标题】:How can I create a file within a test and convert it to a HttpContent object?如何在测试中创建文件并将其转换为 HttpContent 对象?
【发布时间】:2020-03-19 12:18:49
【问题描述】:

我正在编写测试来测试 API 响应。我需要测试将文件上传到 .NET API 的响应。

所以我需要通过我的 post 方法将模拟文件作为 HttpContent 对象传递。如何做到这一点?有没有办法在测试中创建文件对象并将其转换为 HttpContent 对象?

如果有帮助,我正在使用 Xunit 测试框架。

【问题讨论】:

  • 请展示一下你到目前为止都尝试过什么
  • 实际上,我完全不知道该怎么做。有人建议我使用 bash 脚本来执行此操作。但我也不确定如何实施。
  • 什么内容类型? multipart/form-data?还是 JSON?
  • 多部分/表单数据。它应该正在接收媒体文件(.PNG、.JPG、.MP4 等)

标签: c# .net unit-testing testing


【解决方案1】:

我假设问题中的HttpContent 是针对HttpClient

HttpContent 是一个抽象类,不能实例化。您需要根据请求的内容类型创建一个具体的派生类。

在这种情况下,根据评论,您可以使用MultipartFormDataContent

var content = new MultipartFormDataContent("your boundary");
var file = File.OpenRead("file path");
content.Add(new StreamContent(file), "name", "fileName");

【讨论】:

  • 这很棒。谢谢。但是,这需要我目录中某处的文件吗?有没有办法做到这一点而不必在我的目录中创建文件?
  • 是的,File.OpenRead 读取一个实际文件并返回一个流。您可以使用new MemoryStream() 在内存中创建一个流,并将虚拟数据写入其中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2011-08-24
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
相关资源
最近更新 更多