Soy bastante nuevo en las pruebas unitarias en C # y estoy aprendiendo a usar Moq. A continuación se muestra la clase que estoy tratando de probar.
class MyClass
{
SomeClass someClass;
public MyClass(SomeClass someClass)
{
this.someClass = someClass;
}
public void MyMethod(string method)
{
method = "test"
someClass.DoSomething(method);
}
}
class Someclass
{
public DoSomething(string method)
{
// do something...
}
}
A continuación se muestra mi TestClass:
class MyClassTest
{
[TestMethod()]
public void MyMethodTest()
{
string action="test";
Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
mockSomeClass.SetUp(a => a.DoSomething(action));
MyClass myClass = new MyClass(mockSomeClass.Object);
myClass.MyMethod(action);
mockSomeClass.Verify(v => v.DoSomething(It.IsAny<string>()));
}
}
Me sale la siguiente excepción:
Expected invocation on the mock at least once, but was never performed
No setups configured.
No invocations performed..
Solo quiero verificar si se llama o no al método "MyMethod". ¿Me estoy perdiendo de algo?
lo siento ... edité mi pregunta ..
—
user591410
Estás en el camino correcto, pero hay errores en el código publicado. No se compilará: carcasa en Someclass, anulación de retorno en DoSomething. Después de eso, necesita acceso público, luego haga DoSomething virtual. En resumen, probablemente tenga un error en su código de producción también.
—
TrueWill
Gracias por su respuesta. Estaba configurando los argumentos incorrectamente mientras configuraba el método simulado ..
—
user591410
"No hay configuraciones configuradas". Podría ser engañoso. No necesita configurar un comportamiento para los métodos que se llamarán. Y también recuerde ejecutar el método "Verificar" DESPUÉS de que se llame al método que está probando (por lo que está bien en su caso).
—
Sielu
SomeClass
no tiene una definición paraMyMethod(string)
, lo que parece que no tiene.