FakeItEasy - 捕获异常以断言消息

时间:2016-03-10 07:42:05

标签: c# .net unit-testing fakeiteasy

我有以下测试:

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

这就像魅力一样,但我想要断言的是,记录器是否与被抛出异常的消息完全一致,而不仅仅是任何字符串。

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

提前致谢

2 个答案:

答案 0 :(得分:3)

在方法调用lambda中明确指定所需的参数值。

尝试以下

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

答案 1 :(得分:1)

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

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

然后在测试“动作”之后,您可以看到预期的异常是否在列表中。