使用NSubstitute,有没有办法捕获传递给属性设置器的值?
E.g。如果我有以下界面:
public interface IStudent {
int Id { set; }
string Name { set; }
}
说我有替代品,例如:
var _studentSub = Substitute.For<IStudent>();
如果调用替代品的任何“set”方法,我有什么方法可以拦截和捕获值?
答案 0 :(得分:13)
NSubstitute的标准方法是使用getter和setter属性,因为替换上的属性将按预期工作(即,您将获得所设置的内容)。
如果您的界面必须具有仅限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);
}