nsubstitute, имитирующий вызов метода для любого значения XMLNode

У меня есть интерфейс, который выглядит так

IBasePlugin содержит...

  bool Connect(XmlNode xmlRequest);

Я хотел бы издеваться над этим, чтобы вернуть true независимо от того, какой запрос я отправляю с помощью NSubstitute Вот как выглядит мой сценарий

//[TestFixture]
public class NUnitTest1
{
    //[Test]
    public void TestMethod1()
    {
        var b = Substitute.For< IBasePlugin > ();
        b.Connect(Arg.Any<XmlNode>())
        MyPlugin tester = new MyPlugin(b);
        tester.GetAddressList()

    }
}

Проблема в том, что я задавался вопросом, как мне смоделировать любое значение, переданное в Connect. Я думал, что это будет что-то вроде того, что у меня есть, но ему не нравится, что любой вызов, потому что тип возврата ref ref T не поддерживается. Любой вклад был бы замечательным. Спасибо.


person jvoigt    schedule 26.02.2021    source источник
comment
Я не вижу тип T в определении? Из определения IBasePlugin `b.Connect(Arg.Any‹XmlNode›()).Returns(true);` должно работать.   -  person David Tchepak    schedule 01.03.2021
comment
Мне нужно было добавить, что я использовал С# 6. Этот ответ был бы правильным, если бы он был 7.0 или выше. Из-за проекта я не смог конвертировать в то время.   -  person jvoigt    schedule 01.03.2021


Ответы (1)


Я понял. Вы не можете использовать любой. Добавление Compat было ключевым моментом. Мне пришлось использовать:

b.Connect( Arg.Compat.Any<XmlNode>()).Returns(true);
person jvoigt    schedule 01.03.2021
comment
Если вы предпочитаете, вы можете использовать немного более короткий синтаксис b.Connect(null).ReturnsForAnyArgs(true). - person David Tchepak; 02.03.2021