【问题标题】:Generating lambda expressions in nsubstitute mocking在 nsubstitute 模拟中生成 lambda 表达式
【发布时间】:2018-03-18 16:30:22
【问题描述】:

我正在尝试获取一个 NSubstitue 对象,我必须使用另一个函数来模拟一个函数。 (例如,我想要一个标识函数获取单个字符串并返回它)

假设我有一个类 foo,其函数 bar 获取单个 int,并返回单个 int,我将如何创建一个模拟它来返回它为每个输入获得的值?

特别是,给定一个接口:

public interface ifoo 
{
   public int func(int x) { ... }
}

我可以使用 NSubstitute 创建它的模拟,并使函数 func returh 为每个 x,即 x? (即 f(x) = x)

【问题讨论】:

  • 这是可能的(根据下面的答案),但在这种情况下,避免为此使用模拟库是最简单的。即class IdFoo : ifoo { public int func(int x) => x; } 然后使用它的一个实例进行测试。

标签: c# mocking nsubstitute


【解决方案1】:

可以使用CallInfo返回第一个位置的参数

var subst = Substitute.For<ifoo>();
subst.func(Arg.Any<int>()).Returns(info => info.ArgAt<int>(0));
var test = subst.func(10);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多