c# - FakeItEasy 配置 fake 以抛出异常并在下一次调用时返回值

标签 c# .net unit-testing mocking fakeiteasy

我们必须实现重试机制。

为了测试 RetryProvider,我想要一个假类在前两次调用时抛出异常,但在第三次调用时返回一个有效对象。

在正常情况下(不抛出异常)我们可以使用 A.CallTo(() => this.fakeRepo.Get(1)).ReturnsNextFromSequence("a", "b", "c");

我想要类似的东西:

  • 第一次调用:throw new Exception();
  • 第二次调用:throw new Exception();
  • 第三次调用:返回“成功”;

我怎样才能配置我的假货来做到这一点?

提前致谢

最佳答案

var fakeRepo = A.Fake<IFakeRepo>();

A.CallTo(() => fakeRepo.Get(1))
     .Throws<NullReferenceException>()
     .Once()
     .Then
     .Throws<NullReferenceException>()
     .Once()
     .Then
     .Returns('a');

Specifying different behaviors for successive calls 查看更多相关信息.

关于c# - FakeItEasy 配置 fake 以抛出异常并在下一次调用时返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017216/

相关文章:

c# - FakeItEasy:根据表达式返回不同的对象

c# - 永远等待本地主机!

c# - 如何在 C# 中创建自己的动态类型或动态对象?

c# - 如何获取 WPF 中的内置路由事件列表

c# - .NET 正则表达式 : negate previous character for the first character in string

java - 使用 Hibernate 进行测试 : Object dependence chain on persistence

c# - 我想在 C# 中将日期 "2018-05-18 17:16:24.570"转换为 "7/26/2018, 10:42 AM"格式

c# - 何时何地调用 RemoveObserver

c# - IShellItem 的 GUID

unit-testing - 编写dart unittest时如何正确使用 `expectAsync2`?