web-dev-qa-db-ja.com

MoqなしでC#でFormFileのインスタンスをインスタンス化する方法は?

RavenDBデータベースのドキュメントにファイルを添付する機能を、統合テストでテストしたいと思います。これには、IFormFileのインスタンスが必要です。

明らかに、インターフェイスからインスタンス化することはできないので、FormFileインターフェイスから継承する IFormFile のインスタンスをインスタンス化しようとしました。

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

ただし、これにより次のエラーがスローされます。

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

コードからContentType = "application.pdf"を削除すると、ContentTypeなしで新しいインスタンスをインスタンス化できます。

FormFileフレームワークなしでContentTypeを使用してMoqのインスタンスをインスタンス化するにはどうすればよいですか?

10
Tom Aalbers

ハンスのコメントのおかげで、実際の答えは次のとおりです。

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"
    };
}
19
Devator