FakeItEasy - 捕获异常以断言消息

FakeItEasy - capture exception to assert message

我有以下测试:

    [Test]
    public void Save_WhenExceptionIsThrown_ThenExceptionIsLogged()
    {
        A.CallTo(() => this.personRepository.Save(A<PrsPerson>._)).Throws(new Exception("Expected Exception"));

        var personen = this.GetPersonenCollectionWithSpecificAmount(2);

        this.testee.Save(personen);

        A.CallTo(() => this.applicationLogger.Error(A<string>._)).MustHaveHappened(Repeated.Exactly.Once);
    }

这就像一个魅力,但我还想断言的是,调用记录器时是否使用了抛出异常的消息,而不仅仅是任何字符串。

是否可以捕获抛出的异常,如果可以,如何捕获?

在方法调用 lambda 中明确指定您想要的参数值。

尝试关注

 A.CallTo(() => this.applicationLogger.Error("Expected Exception"))
 .MustHaveHappened(Repeated.Exactly.Once);

记录器是否被注入?你可以嘲笑它。

class ListLogger : List<string>, ILogger
{
    public void LogException(Exception ex)
    {
        Add(ex.ToString());
    }
}

然后在测试之后"acts"你可以看到预期的异常是否在列表中。