Fluent Assertions是一个用于任何类型的断言的.NET库,但我无法让它与PowerShell一起使用。可能吗?
我使用添加类型 cmdlet 添加库的 DLL,并尝试了以下示例:
PS C:Usersymm> $test = 'test string'
PS C:Usersymm> $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
我认为您将不得不将其称为显式静态方法。
从理论上讲,这将是:
[FluentAssertions.AssertionExtensions]::Should($test).BeNull()
但是,虽然这是一个简单的示例,但您可能必须显式键入参数以避免以后出现歧义。Powershell 很可能会隐式地使参数PSObject
解析为Object
而不是string
或任何其他具体类型。
Should
以及 Fluent 断言中的所有断言都是 PowerShell 不支持的扩展方法。
我建议使用特定于PowerShell的断言库,或者使用带有常规语法方法的.net库。
除了扩展方法之外,请参阅此问题,了解即将推出的非泛型类泛型方法所涉及的内容。