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"你可以看到预期的异常是否在列表中。
我有以下测试:
[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"你可以看到预期的异常是否在列表中。