Frage

Ich bin ziemlich neu in TDD und gehe mit Nunit und Moq. Ich habe eine Methode, bei der ich eine Ausnahme erwarte, also wollte ich ein wenig mit den Frameworks -Funktionen spielen.

Mein Testcode sieht wie folgt aus:

    [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"
        );
    }

Aber ich erhalte immer die Fehler, dass die Fehlermeldung, dass sich die tatsächliche Ausnahmenachricht von der erwarteten Nachricht unterscheidet. Was mache ich falsch?

War es hilfreich?

Lösung

Leider hat Resharper -Test -Läufer einen Fehler/eine Begrenzung - es wird nicht die erwarteten Attribute für die Erwartung behandelt. Sie haben 2 Optionen:

  1. Verwenden Sie einen anderen Testläufer (z.

  2. Fangen und validieren Sie die Ausnahme manuell mit dem folgenden Muster:

    Test] public void write_messagelogwithcategoryInfofail () {try {string message = "info test meldung";

      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 ist eine echte Schande, denn die beschreibende Art zu sagen, dass Sie eine Ausnahme erwarten!

Nebenbei bemerkt Ich hoffe, dass der obige Code nur zum Spielen mit dem Framework dient - normalerweise würden Sie niemals Mockexceptions fangen :)

Andere Tipps

Sie können den zusätzlichen Parameter verwenden MatchType = MessageMatch.Regex.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top