我有一些代码,例如:
class MyClass
{
private int _myField;
public int MyField => _myField;
}
如何使用MyField
模拟nsubstitute
?还是不可能?
答案 0 :(得分:3)
要使NSubstitute能够模拟您的媒体资源,它必须为virtual
或abstract
。但是之后,您可以像其他任何东西一样对其进行模拟:
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; }
}