簡體   English   中英

如何通過NSubstitute中的超類匹配參數來存根方法?

[英]How to stub a method by matching an argument by a superclass in NSubstitute?

參考以下示例代碼:

using NSubstitute;
using NUnit.Framework;

public class Class1
{
}

public class Class2
{
    public void Method(Class1 class1)
    {
    }
}

public class Class3 : Class1
{
}

[TestFixture]
public class ArgAnyTest
{
    [Test]
    public void Test()
    {
        var called = false;
        var class2 = Substitute.For<Class2>();
        class2.When(@this => @this.Method(Arg.Any<Class1>())).Do(invocation => called = true);

        class2.Method(new Class3());

        Assert.That(called, Is.EqualTo(true));
    }
}

該斷言失敗,表明不匹配Method存根。 我是否誤解了參數匹配器文檔頁面,該頁面聲稱Arg.Any可用於“匹配特定子類型的任何參數”?

看來問題不在於參數匹配,而在於存根。 Method必須是虛擬的,否則將不會存根:

public class Class2
{
    virtual public void Method(Class1 class1)
    {
    }
}

暫無
暫無

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

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