如何在没有Moq的情况下在C#中实例化FormFile实例?

Tom*_*ers 8 c# .net-core iformfile

我想测试一个函数,它通过集成测试将文件附加到RavenDB数据库中的文档.为此,我需要一个实例IFormFile.

显然,我无法从接口实例化,所以我试图实例化一个FormFileIFormFile接口继承的实例.

using (var stream = File.OpenRead("placeholder.pdf"))
{
    var file = new FormFile(stream, 0, stream.Length, null, Path.GetFileName(stream.Name))
    {
        ContentType = "application.pdf"
    };
}
Run Code Online (Sandbox Code Playgroud)

但是这会引发以下错误:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.AspNetCore.Http.Internal.FormFile.set_ContentType(String value)
Run Code Online (Sandbox Code Playgroud)

当我ContentType = "application.pdf"从代码中删除它时,它允许我实例化一个新实例,但没有ContentType.

如何FormFile使用ContentType和不使用Moq框架实例化实例?

Dev*_*tor 19

感谢Hans的评论,实际答案是:

using (var stream = File.OpenRead("placeholder.pdf"))
{
    var file = new FormFile(stream, 0, stream.Length, null, Path.GetFileName(stream.Name))
    {
        Headers = new HeaderDictionary(),
        ContentType = "application/pdf"
    };
}
Run Code Online (Sandbox Code Playgroud)

  • 我只需要补充一点,这就是答案,并且 ContentType 同时具有 Get 和 Set NullReferenceExceptions 使得 FormFile 成为垃圾对象和模式。 (2认同)
  • 好吧,没有设置 Headers 属性,一旦设置就不再出现 Exception (2认同)