He usado el objeto SftpClient de SSH.Net para realizar operaciones de carga y descarga en el servidor.
Estoy tratando de escribir casos de prueba de unidad para la clase que usa este objeto SftpClient.
La clase en sí se burla, pero no puedo configurar un objeto de cliente sin tener que conectarme al servidor, lo cual no es correcto.
public class MockFTPStreamRepository : IFTPStreamRepository { public async Task<MySFTFReposResults> MyMethod1(MyDTO dto) { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); SftpClient myClient = new SftpClient("ftp://localhost", "", ""); sftpClient.Connect(); writer.Write("Some Content"); writer.Flush(); stream.Position = 0; return new MySFTFReposResults { IsTransferSuccess = true, FileStream = stream, sftpClient = myClient}; } }No puedo proporcionar un servidor ftp real y las credenciales anteriores para conectarme, ya que eso no es válido para otros entornos.
¿Hay alguna manera de obtener un objeto SftpClient válido de esto?
Como esta es una clase concreta, la prueba de sus métodos no se puede realizar sin crear una conexión real. Sin embargo, hay varias formas de probar esto.
La primera es envolviendo el SftpCLient en una interfaz y usando Constructor Injection para crear una costura. Luego, con el marco Moq , puede simular las llamadas de método que llama desde sus propios métodos.
También puede crear un servidor sftp local y crear un espejo de los casos del mundo real para que pueda probar el comportamiento de sus métodos.
También podría ser que haya un paquete nuget que admita el servidor SFTP en memoria.