📜  nsubstitute 配置属性 (1)

📅  最后修改于: 2023-12-03 15:18:02.329000             🧑  作者: Mango

Nsubstitute 配置属性作主题

Nsubstitute 是一种强大的 .NET mocking 框架,可以让你轻松创建临时对象来模拟在测试中不可用的对象。当你想要对某些代码进行测试时,但不想通过它的依赖对象进行测试时,使用 Nsubstitute 可以帮助你模拟这些尚未实现的依赖,以便你可以单元测试你的代码。

在使用 Nsubstitute 进行 Mock 测试时,使用配置属性可以更好地控制返回值,参数匹配和其他更高级的功能。通过本文,你将学习如何使用 Nsubstitute 的配置属性来掌控更多的 Mock 测试细节。

配置属性常用方法

Nsubstitute 的配置属性使用起来非常容易,它提供了各种各样的方法,以满足你所需要的各种测试情形。下面是一些常用的配置方法:

  • .Returns(value1, value2, …):指定该函数或属性应该在每次调用时返回一个或多个给定的值。
  • .ReturnsForAnyArgs(value1, value2, …):指定该函数或属性应该在任何参数下都返回一个或多个给定的值。
  • .Returns(Func<T>:指定该函数或属性应该在每次调用时通过调用给定的函数来返回一个值。
  • .ReturnsForAnyArgs(Func<T>:指定该函数或属性应该在任何参数下都通过调用给定的函数返回一个值。
  • .Throws(Exception):指定在调用该函数或属性时应抛出一个异常。
  • .Do(action):指定在调用该函数或属性时应该执行给定的操作,比如保存参数。
用法举例

以下是一些使用 Nsubstitute 配置属性进行 Mock 测试的示例:

示例1
var mySubstitute = Substitute.For<IMyInterface>();
mySubstitute.MyMethod(Arg.Any<int>()).Returns(42);

该代码中,IMyInterfaceMyMethod 方法在任何输入值下都会返回 42。

示例2
var mySubstitute = Substitute.For<IMyInterface>();
mySubstitute.MyProperty.Returns(42, 24, 42, 0);

该代码中,每次访问 MyProperty 属性的值将依次返回 42、24、42 和 0。

示例3
var mySubstitute = Substitute.For<IMyInterface>();
mySubstitute
    .When(x => x.MyMethod(Arg.Is("input")))
    .Do(x => Console.WriteLine("Called with 'input'"));

该代码中,当 MyMethod 方法被传入值为 "input" 的参数时,该函数将执行一个 Console.WriteLine 语句。

通过配置 Nsubstitute 属性,你可以灵活地控制你的 Mock 测试。不论你是在测试一个已有的代码还是编写新的代码,Nsubstitute 配置属性都可以使你的测试更加准确和有用。