powershell - 从纠缠测试运行开始作业返回测试结果
问题描述
我正在使用纠缠来测试我的自定义 cmdlet。测试是启动环境的端到端测试;编译和加载程序集并对动态编译的代码执行测试。
我需要在一个新的 PowerShell 进程中进行实际测试(这样每次都可以编译和加载程序集),所以我使用 start-job 在后台运行测试start-job
并使用receive-job -wait
. 像这样的东西:
Describe 'Run' {
It 'StartJobTest' {
start-job -script {invoke-pester .\MyTests.Tests.ps1} | receive-job -wait
}
}
一切正常,除了我无法从作业中返回任何测试成功或失败状态,以便调用纠缠测试可以标记为成功或失败。
有谁知道如何实现这一目标。我尝试设置$global:PesterPreference.Run.Exit = $true
,但这没有任何区别。
感谢您收到任何帮助或建议,
大卫
解决方案
我认为您需要使用-PassThru开关:
返回包含测试结果的自定义对象 (PSCustomObject)。默认情况下,Invoke-Pester 写入主机程序,而不是输出流 (stdout)。如果您尝试将结果保存在变量中,除非您使用
PassThru
参数,否则该变量为空。
Describe 'Run' {
It 'StartJobTest' {
$Results = Start-Job -Name Invoke-Pester -ScriptBlock {
Invoke-Pester -Path '.\MyTests.Tests.ps1' -PassThru
} | Receive-Job -Wait -AutoRemoveJob
$Results.FailedCount | Should -BeExactly 0
}
}
PS 在 Pester v5 中,此开关替换为ConfigurationProperty
Run.PassThru
:https ://pester.dev/docs/migrations/v4-to-v5
推荐阅读
- flutter - Flutter Bloc 消费者状态重叠
- postgresql - 单元测试 Postgres 数据库连接 golang
- django - drf-spectacular 找不到检查员课程
- tooltip - 格式化 Altair 等值线地图图例比例和工具提示
- python - MATLAB的PIQE函数错了吗?
- assembly - 如果我在 MIPS32 程序集中将其空间保留为 .space,是否需要以空值开头?
- google-bigquery - BigQuery,有没有办法在整个数据库中搜索字符串?
- linux - 将 ioremap 用于端口空间地址有什么好处吗?
- java - Spring Webflow - 广义决策状态的最佳实践
- javascript - 如何将种子值传递给 Sequelize 中的随机顺序函数