有没有办法在没有 setter 的情况下使用 nsubstitute 模拟 属性?
Is there any way to mock property without setter using nsubstitute?
我有一些代码,比如:
class MyClass
{
private int _myField;
public int MyField => _myField;
}
如何使用 nsubstitute
模拟 MyField
?还是不可能?
要让 NSubstitute 能够模拟您的 属性,它必须是 virtual
或 abstract
。但在那之后,你可以像其他任何东西一样模拟它:
var mock = Substitute.For<MyClass>();
mock.MyField.Returns(-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; }
}
我有一些代码,比如:
class MyClass
{
private int _myField;
public int MyField => _myField;
}
如何使用 nsubstitute
模拟 MyField
?还是不可能?
要让 NSubstitute 能够模拟您的 属性,它必须是 virtual
或 abstract
。但在那之后,你可以像其他任何东西一样模拟它:
var mock = Substitute.For<MyClass>();
mock.MyField.Returns(-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; }
}