Ich habe Methode, die Liste der Dateien vom FTP-Server abruft, wie unten:Ist es möglich, Windows-/Netzwerk-Anmeldeinformationen zu übergeben, die von WebRequest für den Zugriff auf den lokalen Ordner anstelle von Remote-FTP im Komponententest verwendet werden?
public List<string> FetchFilesList()
{
var request = WebRequest.Create(FtpServerUri);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = Credentials;
using (var response = request.GetResponse())
{
var responseStream = response.GetResponseStream();
using (var reader = new StreamReader(responseStream))
{
var fileNamesString = reader.ReadToEnd();
var fileNames = fileNamesString.Split(
Environment.NewLine.ToCharArray(),
StringSplitOptions.RemoveEmptyEntries);
return fileNames.ToList();
}
}
}
Ich versuche, UT zu schreiben, die mein lokales Verzeichnis statt FTP zugreifen würden.
Hier ist mein UT:
// ftpFetcherTestWrapper is thin wrapper to expose properties to UT
// TODO: For some reason providing credentials like this doesn't work :(
// It also doesn't work for DefaultNetworkCredentials
ftpFetcherTestWrapper.CredentialsExposed = CredentialCache.DefaultCredentials;
// As we are using wrapper we substitude FtpServerUri to our fake-local folder
ftpFetcherTestWrapper.ServerUriExposed = new Uri(directoryName);
var filesList = ftpSFetcherTestWrapper.FetchFilesList();
I System.Net.WebException: "Access to the path 'D:\\SomePathToUnitTestsExecutionFolder\\XmlFiles' is denied."
Q erhalten: Ist es möglich, Fenster/Netzwerk-Anmeldeinformationen übergeben von WebRequest verwendet werden anstelle von FTP in Einheit lokalen Ordner zuzugreifen Prüfung?
[EDIT]
Bitte beachte, dass ich in der Lage Dateiinhalte zu testen, holen, wenn lokale Dateipfad bereitgestellt wird, statt ftp ein:
public XDocument FetchFile(string fileName)
{
var client = new WebClient();
client.Credentials = Credentials;
var fileUri = new Uri(FtpServerUri, fileName);
var downloadedXml = client.DownloadString(fileUri);
return XDocument.Parse(downloadedXml);
}
auch, dass ich bin mir bewusst, Was ich tue, ist keine 100% ige Definition von Unit Test, aber ich denke immer noch, dass dies ein guter Test ist.
Es gibt ein nettes Werkzeug bei github: https://github.com/Buthrakaur/FtpIntegrationTesting/tree/master/FtpIntegrationTesting, aber es führt tatsächlich ftpdmin.exe. Immer noch nicht wirklich was ich will. –