8

使用 NSubstitute,有什么方法可以捕获您传递给属性设置器的值?

例如,如果我有以下界面:

public interface IStudent {
    int Id { set; }
    string Name { set; }
}

说我有一个替代品,例如:

var _studentSub = Substitute.For<IStudent>();

如果调用了替代品的任何“设置”方法,我有什么方法可以拦截并捕获该值?

4

1 回答 1

15

NSubstitute 的标准方法是使用带有 getter 和 setter 的属性,因为然后替代品上的属性将按预期工作(即您将取回设置的内容)。

如果您的界面必须具有仅设置器属性,您可以使用以下方法捕获单个属性的值Arg.Do

[Test]
public void Setter() {
    var sub = Substitute.For<IStudent>();
    var name = "";
    sub.Name = Arg.Do<string>(x => name = x);

    sub.Name = "Jane";

    Assert.AreEqual("Jane", name);
}
于 2011-10-03T21:18:16.083 回答