2016-08-02 83 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. 
} 
相关问题