Ich habe den folgenden CodeWeitere überprüfen Ergebnis MOQ mit
public bool IsUnitAvailable()
{
this.isUnitAvailable = false;
if(isUnitAvailable == false)
{
var exception = new Exception("Unit Unavailable");
exception.Data.Add("Quotation","1234567");
exception.Data.Add("propertyDate", "2016-10-10"); this.GetElmahExtensionWrapper().LogToElmah(exception);
}
}
return this.isUnitAvailable;
}
und der folgenden Unit-Test.
[TestMethod]
public void WhenUnitIsNotAvailableExceptionShouldBeLoggedInElmahTest()
{
//Arrange
var iPricingServiceMock = new Mock<IPricingService>(MockBehavior.Strict);
iPricingServiceMock.Setup(
counter => counter.IsUnitAvailableOn(It.IsAny<Unit>(),It.IsAny<DateTime>())).Returns(false);
var mockElmahExtensionWrapper = TestHelper.mk.GetMock<IElmahExtensionWrapper>();
// act
var quotation = new Quotation();
quotation.SetElmahExtensionWrapper(mockElmahExtensionWrapper.Object);
quotation.IsUnitAvailable();
//assert
mockElmahExtensionWrapper.Verify(counter => counter.LogToElmah(It.IsAny<Exception>()), Times.Exactly(1));
//change the test to verify that the exception that was logged had 2 Data properties?
}
Der Komponententest funktioniert. Wie kann ich den Test ändern, um zu überprüfen, ob die protokollierte Ausnahme 2 Data-Eigenschaften aufweist? Wenn Sie den folgenden Code ändern, wird der Fehler "Symboldateneigenschaft kann nicht aufgelöst werden" ausgegeben.
mockElmahExtensionWrapper.Verify
(
counter => counter.LogToElmah
(
It.IsAny<Exception>(ex=>ex.Data.Count == 2)
),
Times.Exactly(1)
);
Sie können nicht tun, mit 'It.IsAny', den Sie verwenden müssen '' It.Is –
Vielen Dank @ AD.Net. Das funktioniert. Ich wünschte, ich könnte den Kommentar als die richtige Antwort markieren. –
Ich habe nicht als Antwort hinzugefügt, weil die Antwort das gleiche mit 'It.Is <>' Syntax tut –