我試圖僞造一個集成測試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