Можно ли использовать библиотеку Fluent Assertions с PowerShell?

Fluent Assertions — это библиотека .NET для любых утверждений, но я не могу заставить ее работать с PowerShell. Это вообще возможно?

Я использовал командлет Add-Type для добавления библиотек DLL библиотеки и попробовал следующий пример:

PS C:\Users\ymm> $test = 'test string'
PS C:\Users\ymm> $test.[FluentAssertions.AssertionExtensions]::Should().BeNull()

Но получил следующую ошибку:

Cannot find an overload for "Should" and the argument count: "0".
At line:1 char:1
+ $test.[FluentAssertions.AssertionExtensions]::Should().BeNull()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest

person YMM    schedule 11.07.2016    source источник
comment
Вы смотрели Pester (github.com/pester/Pester)? Он написан для тестирования Powershell и поэтому не отличается многословием родной библиотеки .NET.   -  person Richard Szalay    schedule 11.07.2016
comment
Pester хорош, но не сравнится с этой библиотекой. И насколько я помню, для работы требуется определенная файловая структура и синтаксис, т.е. я не могу просто использовать само утверждение без блока Describe и т.д.   -  person YMM    schedule 11.07.2016


Ответы (2)


Я думаю, вам придется вызывать его как явный статический метод.

Теоретически это будет:

[FluentAssertions.AssertionExtensions]::Should($test).BeNull()

Однако, несмотря на то, что это простой пример, вам, возможно, придется ввести аргументы явно, чтобы избежать двусмысленности позже. Powershell, скорее всего, неявно сделает аргументы PSObject, которые разрешаются в Object вместо string или любого другого конкретного типа.

person Eris    schedule 11.07.2016

Should, а также все утверждения в утверждениях Fluent — это методы расширения, которые не поддерживаются PowerShell.

Я бы рекомендовал использовать специальную библиотеку утверждений PowerShell или библиотеку .net с обычными методами для синтаксиса.

В дополнение к методам расширения см. этот вопрос, чтобы узнать, что связано с приходом универсальные методы для необобщенных классов.

person Richard Szalay    schedule 11.07.2016