2016-08-02 14 views
1

私はコントローラwhitchサポートのuploadnigファイルを持っています。その内部には、ファイル内のデータを検証するメソッドがあります。文字列をFormFile形式のファイルに保存するには

IEnumerable<ValidationResult> Validate(ICollection<IFormFile> files) 

これは完全に機能します。今私はこのコントローラにテストを書く必要があります。そして私の質問は、ファイル形式のディスクをFormFile形式の私の機能にどのように配信するのですか?

+0

'FormFile'はデフォルトの.NETクラスライブラリの一部ではないようです。あなたの質問に追加してください:(1) 'FormFile'クラスのドキュメンテーションへのリンクと、(2)あなたが使っているサードパーティライブラリのためのタグ。 – Heinzi

+0

Microsoft.AspNetCore.Http.IFormFile。私の悪いのは、.Net Core – MKasprzyk

+0

私の答えは一般的なものです。私はあなたの "文字列"がどこから来たのかわかりません。 – Jamiec

答えて

3

一般的に、このようなものをインターフェイスとして実装する理由は、にテストすることができます。

あなたは簡単にすべてのプロパティを実装する必要があり&方法のためdocumentationを参照してくださいテスト

public class TestFormFile : IFormFile 
{ 
    // Implementation here 
} 

からあなたのコントローラメソッドに渡すIFormFileを実装してテストクラスを書くことができます。

おそらくコンストラクタでの文字列の内容を取り、 IFormFile上の3つの方法を実装する際にそれを使用する必要がありますあなたの実装は

- 例えばOpenReadStreamのための1つは、MemoryStream(注を使用してimplemntedすることができ、あなたが知っている必要がありますあなたのテスト文字列のエンコード!):

public class TestFormFile : IFormFile 
{ 
    private string testFileContents; 

    public TestFormFile(string testFileContent) 
    { 
     this.testFileContents = testFileContents; 
    } 

    public Stream OpenReadStream() 
    { 
     return new MemoryStream(Encoding.UTF8.GetBytes(testFileContents)); 
    } 

    // Implement Other methods and properties. 
} 
関連する問題