我陷入困境,我正在ASP.Net MVC中创建一个测试项目,这里我正在测试一个实际上用来下载文件的方法,所以每当我试图测试这个方法时,它给出了
使用自定义TextWriter时,OutputStream不可用
Response.BinaryWrite()
出错,一切都很好,除了这个,有人能告诉我如何解决这个异常,我使用 MOQ dll进行模拟,请建议我摆脱这个情况。
HttpContext.Current.Response.BinaryWrite()
这是实际生成异常的行,现在我有一个问题 - 测试下载方法是否合适,或者我必须离开它,如果它好,那么如何解决这个问题。
感谢。
答案 0 :(得分:1)
如果您正在编写单元测试,通常不希望编写具有您无法控制的依赖项的测试(例如,写入数据库,文件系统或输出流)。您还可以假设Response.BinaryWrite执行它应该执行的操作。
你可以做这样的事情来解决你所看到的错误。
public interface IBinaryWriter
{
void BinaryWrite(byte[] buffer);
}
public class ResponseBinaryWriteWrapper : IBinaryWriter
{
public void BinaryWrite(byte[] buffer)
{
HttpContext.Current.Response.BinaryWrite(buffer);
}
}
这将使您能够将IBinaryWriter注入要作为模拟测试的类,然后您可以检查是否使用正确的字节数组调用BinaryWrite。在生产代码中,然后注入具体的ResponseBinaryWriterWrapper类。