2016-08-02 82 views
1

我有控制器,它支持uploadnig文件。它內部是一種驗證文件中數據的方法。如何將字符串保存爲FormFile格式的文件

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

它完美地工作。現在我需要爲這個控制器寫測試。而我的問題是:如何將文件格式的光盤傳送到我的功能FormFile格式?

+0

「FormFile」似乎不是默認的.NET類庫的一部分。請添加您的問題:(1)指向「FormFile」類文檔的鏈接,以及(2)您正在使用的第三方庫的標籤。 – Heinzi

+0

Microsoft.AspNetCore.Http.IFormFile。我的壞它來自.Net核心 – MKasprzyk

+0

我的答案是一個普遍的 - 我不知道你的「字符串」來自哪裏,以及它如何與這個問題。 – Jamiec

回答

3

一般來說,實現類似這樣的接口的原因是幫助您可以測試它。

你可以隨便寫一個實現IFormFile傳遞給你的控制器方法從測試

public class TestFormFile : IFormFile 
{ 
    // Implementation here 
} 

documentation所有屬性&方法,你必須實現一個測試類。

你的實現應該大概需要在構造函數中的字符串內容,並實現對IFormFile 3種方法的時候使用它 - 例如一個用於OpenReadStream可利用的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. 
} 
相關問題