如何将kubectl exec返回值传入PowerShell脚本进行Pester测试
解决方法
当然可行,你需要调整两个关键点:捕获kubectl exec的输出,以及让mongosh正确输出计数结果。修改后的代码如下:
Context "Foo collection" { It "should have no documents"{ # 捕获kubectl exec的输出,去掉交互式参数,让mongosh仅返回计数结果 $countOutput = kubectl exec $podName -n mongo ` -- mongosh -u root -p $mongoSecret --quiet ` --eval " db = db.getSiblingDB('thisOne'); db.getCollection('foo').countDocuments({}, {limit: 1}) " # 将输出转换为整数,避免字符串格式干扰断言 $docs = [int]$countOutput $docs | Should -Be 0 } }
关键调整说明:
- 移除
-it参数:脚本运行属于非交互式环境,-it会触发不必要的终端交互逻辑,去掉后执行更稳定。 - 添加
--quiet参数:屏蔽mongosh的启动提示、连接信息等冗余输出,只保留我们需要的计数数值。 - 简化mongosh代码:直接在
--eval的最后一行执行countDocuments调用,mongosh会自动返回并打印该结果,无需额外的return或变量赋值(保留变量也可,但直接输出更简洁)。 - 捕获并转换输出:把
kubectl exec的执行结果赋值给变量,再转为整数类型,确保后续断言的准确性。
如果你的环境中mongosh输出存在多余空白字符,可以先清理再转换:
$docs = [int]$countOutput.Trim()
内容的提问来源于stack exchange,提问作者a_wahab
相关产品推荐
相关产品推荐

