ユニットテストFTPWebRequest / FTPWebResponse.
-
14-11-2019 - |
質問
MOQを介してFTPWebRequestとFTPWebResponseをどのようにテストしますか。
正しい解決策はありません
他のヒント
あなたはmock ftpwebRequest または
独自のFTPWeb *オブジェクトを構築し、それらをハンドラに渡す必要があります。
FTPWebResponse
には、それから何かを派生させることができるようにコンストラクタが露出していないため、Mockでは不可能です。
これは私が同様の状況で私のテストを書いた方法です。
テスト中の方法:ExceptionContainsFileNotFound(Exception ex)
.
以下の論理を含みます:
if (ex is WebException)
{
var response = (ex as WebException).Response;
if (response is FtpWebResponse)
{
if ((response as FtpWebResponse).StatusCode == FtpFileNotFoundStatus)
{
return true;
}
}
}
.
それをテストするために私はクイックトリックを実装しました。
try
{
var request = WebRequest.Create("ftp://notexistingfptsite/");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.GetResponse();
}
catch (WebException e)
{
// trick :)
classUnderTest.FtpFileNotFoundStatus = FtpStatusCode.Undefined;
var fileNotFoundStatus = classUnderTest.ExceptionContainsFileNotFound(e);
Assert.That(fileNotFoundStatus, Is.True);
}
.
(もちろんFTTFILenotFoundStatusは世界にさらされていません)
それは私がRhinoフレームワークを使う。
パブリックコンストラクタがない場合はインスタンス作成を処理できます。読み取り専用プロパティなど。
例:
var ftpWebResponse = Rhino.Mocks.MockRepository.GenerateStub<FtpWebResponse>();
ftpWebResponse.Stub(f=>f.StatusCode).Return(FtpStatusCode.AccountNeeded);
. 所属していません StackOverflow