使用 NSubstitute,有什么方法可以捕获传递给属性 setter 的值吗?
例如如果我有以下界面:
public interface IStudent {
int Id { set; }
string Name { set; }
}
说我创建了一个替代品,例如:
var _studentSub = Substitute.For<IStudent>();
如果调用替代的任何“set”方法,有什么方法可以拦截并捕获该值吗?
最佳答案
NSubstitute 的标准方法是拥有带有 getter 和 setter 的属性,这样替代品上的属性将按预期工作(即,您将返回设置的内容)。
如果您的接口(interface)必须具有仅限 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);
}
关于mocking - NSubstitute仅拦截 "setter"属性调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637024/