Soy nuevo en Moq y estoy aprendiendo.Moq: especificar los valores de devolución como parte de las expectativas
Necesito comprobar que un método devuelve el valor esperado. He creado un ejemplo de noddy para explicar mi problema. Esta falla estrepitosamente con:
"ArgumentException: La expresión no es una invocación de método: c => (c.DoSomething (" Jo " "blog", 1) = "OK")"
¿Puedes corregir lo que estoy haciendo mal?
[TestFixtureAttribute, CategoryAttribute("Customer")]
public class Can_test_a_customer
{
[TestAttribute]
public void Can_do_something()
{
var customerMock = new Mock<ICustomer>();
customerMock.Setup(c => c.DoSomething("Jo", "Blog", 1)).Returns("OK");
customerMock.Verify(c => c.DoSomething("Jo", "Blog", 1)=="OK");
}
}
public interface ICustomer
{
string DoSomething(string name, string surname, int age);
}
public class Customer : ICustomer
{
public string DoSomething(string name, string surname, int age)
{
return "OK";
}
}
En pocas palabras: si quería probar un método similar a la anterior, y sé que estoy esperando volver un "OK", ¿cómo iba a escribirlo usando Moq?
Gracias por cualquier sugerencia.
Exactamente. Su prueba no tiene sujeto de prueba, lo que ha llevado a la confusión. Usted prueba un sujeto de prueba, no un simulacro. –
Estoy aprendiendo también, creo que tengo mi cabeza alrededor de esto, lo confirmaría por favor. En este ejemplo, 'DoSomething' podría devolver' jabberwocky', pero porque a su '// arrange .Setup' se le dice' .Return ("OK") 'esa es la afirmación. Entiendo que la prueba es para asegurarme de que 'TestSubject' funciona como se espera, y no hay una prueba en' Customer' aquí. Si ese es el caso, ¿por qué afirmar el valor de retorno de 'Cliente' y no simplemente' .Returns ("SUCCESS") 'o alguna otra cadena genérica para verificar que' TestSubject' se haya completado con éxito? – JabberwockyDecompiler
@JabberwockyDecompiler: era solo una prueba de muestra en la que la salida depende de un colaborador (burlado) ... por ejemplo, el cliente podría devolver "Sam" y el método/clase bajo prueba podría devolver "¡Hola, Sam!". Para probar esto: necesitaría configurar el simulacro para devolver "Sam" en la prueba. – Gishu