我试图伪造一个集成测试FtpWebRequest.GetResponse(),但不使用服务器。我一直在试图做的是简单地返回一个假的FtpWebResponse,但是,你不能访问FtpWebResponse的构造函数,因为它是内部的。如何创建一个假FtpWebResponse
这里是我的代码:
生产代码:
using (FtpWebResponse response = (FtpWebResponse) ftpWebRequest.GetResponse())
{
ftpResponse = new FtpResponse(response.StatusDescription, false);
}
测试假的,我尝试使用返回假FtpWebResponse:
ShimFtpWebRequest.AllInstances.GetResponse = request =>
{
FtpWebResponse ftpWebResponse= new FtpWebResponse(/*parameters*/); // not allowed because it is internal
ftpWebResponse.StatusDescription="blah blah blah";
return ftpWebResponse;
};
最后,所有我想要的要做的是在我的测试中返回假的ftpWebResponse来断言。有任何想法吗? 谢谢
应当注意的是,这个答案需要Visual Studio高级专业版或更高版本。还有一种叫做Prig的替代方案,我没有用过,可能会有所帮助,否则这应该被认为是一种*高级解决方案*,它不适用于所有人。 – Maffelu 2015-08-31 11:59:03