是否可以在PowerShell中使用Fluent Assertions库?

时间:2016-07-11 00:30:23

标签: powershell fluent-assertions

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

2 个答案:

答案 0 :(得分:1)

我认为您必须将其称为显式静态方法。

理论上,这将是:

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

然而,虽然这是一个简单的例子,但您可能必须在explitly中输入参数以避免以后出现歧义。 Powershell很可能隐含地将参数PSObject解析为Object而不是string或任何其他具体类型。

答案 1 :(得分:0)

Should以及Fluent断言中的所有断言都是PowerShell不支持的扩展方法。

我建议使用PowerShell特定的断言库,或者使用带有常规语法的.net库。

除了扩展方法之外,请参阅this question,了解非泛型类的泛型方法中涉及的内容。