Pregunta

Soy bastante nuevo en TDD y voy con Nunit y MOQ. Tengo un método en el que espero una excepción, así que quería jugar un poco con las funciones de los marcos.

Mi código de prueba se ve como sigue:

    [Test]
    [ExpectedException(ExpectedException = typeof(MockException), ExpectedMessage = "Actual differs from expected")]
    public void Write_MessageLogWithCategoryInfoFail()
    {
        string message = "Info Test Message";

        Write_MessageLogWithCategory(message, "Info");

        _LogTest.Verify(writeMessage =>
            writeMessage.Info("This should fail"),
            "Actual differs from expected"
        );
    }

Pero siempre recibo el error de error que el mensaje de error que el mensaje de excepción real difiere del mensaje esperado. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Desafortunadamente, Resharper Test Runner tiene un error/limitación: no maneja los atributos esperados de Excepción. Tienes 2 opciones:

  1. Use algún otro corredor de prueba (por ejemplo, nunit -gui.exe, enviado con nunit), pero este enfoque hace que sea un dolor depurar sus pruebas

  2. Atrapa y valida la excepción manualmente, utilizando el siguiente patrón:

    Test] public void write_messageLogWithCategoryInfofAil () {try {string Mensaje = "Mensaje de prueba de información";

      Write_MessageLogWithCategory(message, "Info");
    
      _LogTest.Verify(writeMessage =>
          writeMessage.Info("This should fail"),
          "Actual differs from expected"
      );
      Assert.Fail("Expected exception");
    }
    catch(MockException e)
    {
      Assert.AreEqual("Actual differs from expected", e.Message);
    }
    

    }

¡Es una verdadera lástima, porque la forma descriptiva de decir que esperas una excepción es mucho más agradable!

En una nota al margen, espero que el código anterior sea solo para jugar con el marco; generalmente nunca atraparía mockexcepciones :)

Otros consejos

Puede usar el parámetro adicional MatchType = MessageMatch.Regex.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top