Fluent Assertions是一个用于任何类型断言的.NET库,但我无法使用PowerShell。它有可能吗?
我使用 Add-Type cmdlet添加库的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
答案 0 :(得分:1)
我认为您必须将其称为显式静态方法。
理论上,这将是:
[FluentAssertions.AssertionExtensions]::Should($test).BeNull()
然而,虽然这是一个简单的例子,但您可能必须在explitly中输入参数以避免以后出现歧义。 Powershell很可能隐含地将参数PSObject
解析为Object
而不是string
或任何其他具体类型。
答案 1 :(得分:0)
Should
以及Fluent断言中的所有断言都是PowerShell不支持的扩展方法。
我建议使用PowerShell特定的断言库,或者使用带有常规语法的.net库。
除了扩展方法之外,请参阅this question,了解非泛型类的泛型方法中涉及的内容。