es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Método de Configuración con parámetro de tipo objeto utilizando MOQ

Tengo una interfaz

public interface IProgramer
{
    bool ReturnStatus(Program prg, string filepath);
}

Clase

public class Programer : IProgramer
{
    public bool ReturnStatus(Program prg, string filepath)
    {
       // lógica
       return estado;
    }
}

Prueba unitaria

public void StartOperationTest()
{
    string dummyfilepath = "C://Users//x//";
    Program dummyprgObj = new Program
    {
       Name = "x",
       Rollno = 1,
    };

    var mock = new Mock<iprogramer>();
    mock.Setup(x => x.ReturnStatus(dummyprgObj, dummyfilepath)).Returns(true);
}

El método de configuración siempre regresa false. ¿Alguien puede decirme qué está mal aquí?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código anterior es que el objeto mock nunca se utiliza en la prueba de unidad real. Después de configurar el objeto mock, necesitamos usarlo para probar el método en consideración.

    Suponiendo que el método en consideración es StartOperation, que llama al método ReturnStatus de la clase Programmer, podemos modificar la prueba de unidad de la siguiente manera:

    public void StartOperationTest()
    {
        string dummyfilepath = "C://Users//x//";
        Program dummyprgObj = new Program
        {
           Name = "x",
           Rollno = 1,
    
        };
        var mock = new Mock<iprogramer>();
        mock.Setup(x => x.ReturnStatus(dummyprgObj, dummyfilepath)).Returns(true);
    
        //crear objeto de la clase que llama al método ReturnStatus
        MyClass obj = new MyClass(mock.Object); 
    
        //llamar al método en prueba
        bool result = obj.StartOperation(dummyprgObj, dummyfilepath);
    
        //verificar el resultado esperado
        Assert.AreEqual(true, result);
    }
    

    Aquí, creamos una instancia de la clase que llama al método ReturnStatus y pasamos mock.Object a su constructor. Luego llamamos al método en consideración y verificamos el resultado esperado.

    Nota: Reemplace MyClass con el nombre real de la clase que llama al método ReturnStatus.

Comments are closed.