簡體   English   中英

有沒有辦法使用 nsubstitute 在沒有 setter 的情況下模擬屬性?

[英]Is there any way to mock property without setter using nsubstitute?

我有一些代碼,例如:

class MyClass
{
    private int _myField;

    public int MyField => _myField;
}

我怎么能嘲笑了MyField使用nsubstitute 或者這是不可能的?

為了使 NSubstitute 能夠模擬您的財產,它必須是virtualabstract 但在那之后,你可以像其他任何事情一樣模擬它:

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; }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM