有什么方法可以使用nsubstitute模拟属性而无需使用setter?

时间:2019-12-17 12:53:57

标签: c# nsubstitute

我有一些代码,例如:

class MyClass
{
    private int _myField;

    public int MyField => _myField;
}

如何使用MyField模拟nsubstitute?还是不可能?

2 个答案:

答案 0 :(得分:3)

要使NSubstitute能够模拟您的媒体资源,它必须为virtualabstract。但是之后,您可以像其他任何东西一样对其进行模拟:

var mock = Substitute.For<MyClass>();
mock.MyField.Returns(-1);

答案 1 :(得分:1)

更常见的是,您希望在接口上替换一个值。现在,如果您的MyClass实现了下面的ITest接口,您将可以替换该接口。

[Test]
public void CanSubstituteReadOnlyPropertyOnInterface()
{

  var n = NSubstitute.Substitute.For<ITest>();
  n.X.Returns(55);
  Assert.AreEqual(55, n.X);

}

public interface ITest
{
    int X { get; }

}