繁体   English   中英

混合纠缠发现和运行变量

[英]Mix pester Discovery and Run variables

我有这个纠缠脚本块。 当我运行它时,“Test1”失败了,这很好。 第二个“Test2”失败了,但我希望它通过。 对于纠缠 5,这是建议:

`将所有代码放入 It、BeforeAll、BeforeEach、AfterAll 或 AfterEach。 除非您有充分的理由这样做,否则不要将代码直接放入 Describe、Context 或文件顶部,也不要将其包装在这些块之一中。

所有错位的代码都将在 Discovery 期间运行,其结果在 Run 期间将不可用。`

这解释了为什么我的“Test2”失败了。 但是如果我将我的代码放在一个建议的块中,那么我将无法使用 TestCases。

有没有办法解决这个问题?

Describe "Sample" {
    $test = 1
    $testCase = @(
        @{var1 = $test; ExpectedResult = $true})

    It "Test1" -Tag "Update" -TestCase $testCase {
     param ($var1, $expectedresult)
        $var1 | should -be $null
        $test | should -be 1
    }

    it "Test2" -Tag "Fail" {
        $test | should -be 1
    }
}

正如@Efie 所提到的,生成测试用例的代码是该规则的常见例外。 在 Pester 5.1 中添加了一个新的BeforeDiscovery块,您应该将其用于此类代码。

一般来说,您应该很少考虑在测试中重用$test的问题。 您的测试用例应包含所需的变量。 实际上,这就是您将变量从 Discovery 传递到 Run 以使其成为可能的方式,方法是将其作为测试用例值提供。 在您的示例中,您已经这样做了,因此$var1应该在测试中可用并且应该等于1 (与 Discovery 中的$test相同)。

我经常将 hashtable-key 命名为 Discovery-variable(在这种情况下为test ),以使传输感觉无缝。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM