Можно ли протестировать вложенные методы в С# 7.0 через платформу xunit?

Можно ли протестировать вложенные методы в С# 7.0 через платформу xunit? Например, у меня есть такой простой вложенный метод Func2():

// C# 7.0, LINQPad 5

void Func1(){
    var name = "Bob";
    Console.WriteLine($"Hello, {name}!");

    void Func2(ref string n) { 
        n = "Super " + n;
        Console.WriteLine($"How are you, {n}?");
    };

    Func2(ref name);

    Console.WriteLine($"Hello again, {name}!");
}

Func1();

person Andrey Bushman    schedule 21.07.2018    source источник
comment
Вы не должны тестировать локальные методы, просто тестируйте внешние. Если логика внутри локального метода сложна, ее все равно следует извлечь.   -  person DavidG    schedule 21.07.2018
comment
Кстати, строка ref n совершенно не нужна. Локальная функция имеет доступ к переменным внешнего метода. Установка name = "Super " + name и сброс параметров на Func2 сделают то же самое. Example here: sharplab.io/ (Sharplab has issues with functions named FuncX so I' я сменила имя)   -  person pinkfloydx33    schedule 21.07.2018
comment
@pinkfloydx33 без ref в этом примере будет использоваться копия значения.   -  person Andrey Bushman    schedule 21.07.2018
comment
Компилятор создает сгенерированный класс с полем для захваченных локальных переменных. Затем он фактически переводит метод в тот, который принимает этот сгенерированный компилятором класс по ссылке. Затем вы меняете значение поля. Посмотрите пример, который я разместил. Попробуйте различные раскрывающиеся списки на правой панели, и вы увидите сгенерированный IL или специальное скомпилированное представление C#. Также ссылка демонстрирует именно то, что я сказал в представлении результатов. Попытайся.   -  person pinkfloydx33    schedule 21.07.2018