#c# #powershell #xunit
Вопрос:
Я использую тестовую платформу xUnit, и ниже приведен тестовый случай, созданный для тестирования моих cmndlets powershell, и при сборке нет ошибок. Мой проект PowerShell также построен в том же решении и правильно указан в моем тестовом проекте.
приведенная ниже команда PowerShell работает локально и дает мне желаемый результат(как показано ниже)
$rec = Get-Recording -Project 'Demo'
$rec.Count
64
Я пытаюсь протестировать то же самое в своем модульном тестовом примере, и вот мой код. Я не получаю здесь никакого результата, одно сообщение, которое я получаю в строке Invoke (), гласит: «Командлеты, полученные из PSCmdlet, не могут быть вызваны напрямую».. может ли кто-нибудь помочь мне в завершении этого тестового примера и получить результат, как я получаю в окне Powershell выше.
[Fact]
public void TestGetRecordings()
{
// Arrange.
var cmdlet = new GetRecordingsCmd()
{
Project = "Demo"
};
// Act.
var result = cmdlet.Invoke().OfType<List<string>>();
// Assert.True( result, 64 );
Мой cmndlet Powershell определен следующим образом. Я просто упоминаю здесь класс и то, как наследуется мой фактический класс:
public class TorgCmd : PSCmdlet
public abstract class GetDocumentsBaseCmd : TorgCmd {}
public class GetRecordingsCmd
: GetDocumentsBaseCmd
{}
Комментарии:
1. Вы пробовали создать экземпляр PowerShell для запуска командлета?
2. Кстати, вам также необходимо использовать полную версию Microsoft. PowerShell. Пакет SDK в вашем тестовом проекте, если вы еще этого не сделали. У многих людей изначально возникают проблемы с тестированием, когда они используют стандартную библиотеку.
3. Я следил за блогом и ничего не мог увидеть при создании экземпляра.. не могли бы вы уточнить, что вы хотите, чтобы я попробовал github.com/deadlydog/PowerShellCmdletInCSharpExample/blob/…
4. при добавлении Powershell. Пакет SDk, я получаю ошибку при вызове, поскольку «Тип» PSCmdlet » определен в сборке, на которую нет ссылки. Вы должны добавить ссылку на сборку » System.Management. Автоматизация».»
5. У вас есть
using System.Management.Automation
ссылка в верхней части файла? Используете ли вы соответствующую версию SDK? Наследует ли ваш фактический командлет отCmdlet
илиPSCmdlet
?