NSubstitute完全手册(三)设置返回值

简介:

下面的示例中将涉及替代下面的接口定义:

1     public interface ICalculator
2     {
3       int Add(int a, int b);
4       string Mode { get; set; }
5     }

为方法设置返回值

要为替代实例上的一个方法调用设置返回值,可以按正常调用该方法,然后紧跟着一个 NSubstitute 的 Returns() 扩展方法。

复制代码
1     [TestMethod]
2     public void Test_SettingReturnValue_ReturnsValueWithSpecifiedArguments()
3     {
4       var calculator = Substitute.For<ICalculator>();
5       calculator.Add(1, 2).Returns(3);
6       Assert.AreEqual(calculator.Add(1, 2), 3);
7     }
复制代码

该方法在每次被调用时都会返回这个值。Returns() 仅会被应用于指定的参数组合,任何使用其他参数组合对该方法的调用将会返回一个默认值。

复制代码
 1     [TestMethod]
 2     public void Test_SettingReturnValue_ReturnsDefaultValueWithDifferentArguments()
 3     {
 4       var calculator = Substitute.For<ICalculator>();
 5 
 6       // 设置调用返回值为3
 7       calculator.Add(1, 2).Returns(3);
 8 
 9       Assert.AreEqual(calculator.Add(1, 2), 3);
10       Assert.AreEqual(calculator.Add(1, 2), 3);
11 
12       // 当使用不同参数调用时,返回值不是3
13       Assert.AreNotEqual(calculator.Add(3, 6), 3);
14     }
复制代码

为属性设置返回值

为属性设置返回值的方式与为方法设置是一样的,仍然使用 Returns() 语法。对于可读写属性,可以使用传统的属性 setter 进行设置,当然结果就像你期待的那样。

复制代码
 1     [TestMethod]
 2     public void Test_SettingReturnValue_ReturnsValueFromProperty()
 3     {
 4       var calculator = Substitute.For<ICalculator>();
 5 
 6       calculator.Mode.Returns("DEC");
 7       Assert.AreEqual(calculator.Mode, "DEC");
 8 
 9       calculator.Mode = "HEX";
10       Assert.AreEqual(calculator.Mode, "HEX");
11     }
复制代码

更多的设置返回值的方式

本篇介绍了设置返回值的基本方式,但 NSubstitute 提供更多的功能。如果想了解其他方式,例如匹配具体参数忽略参数使用函数计算返回值返回多个值等,请继续阅读。

NSubstitute 完全手册





本文转自匠心十年博客园博客,原文链接:http://www.cnblogs.com/gaochundong/archive/2013/05/21/nsubstitute_setting_a_return_value.html,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
IDE 程序员 开发工具
Python 进阶指南(编程轻松进阶):十一、注释、文档字符串和类型提示
Python 进阶指南(编程轻松进阶):十一、注释、文档字符串和类型提示
485 0
C/C++ 库函数查询工具MSDN
当我们学习C/C++ 总会用到库函数,而面对陌生的函数时,我们就要去查询它的作用,参数,头文件,返回值等等。但是我们在查询它们的用用法时可能会耗费时间和精力,所以我将为大家提供一个好用的查询软件MSDN(注:不需要联网使用)
C/C++ 库函数查询工具MSDN