gpt4 book ai didi

unit-testing - 简单的Powershell Pester测试不适用于$ false

转载 作者:行者123 更新时间:2023-12-02 23:22:20 26 4
gpt4 key购买 nike

我编写了一个非常简单的函数“Check-RegValueExists”,当直接从命令提示符执行时,其工作原理如下

Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "DevicePath"

Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "Devicexxxx"

Check-RegValueExists "HKCU:\Software\Classes\message-facebook-com" "URL Protocol"

输出以下内容
True
False
False

这些都是 正确的结果。

我的瘟疫测试是
Describe 'Check-RegValueExists Tests'{

It "has valid key with valid value" {
'Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "DevicePath"' | Should Be $true
}

It "has invalid key" {
'Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "Devicexxxx"' | Should Be $false
}

It "has empty value" {
'Check-RegValueExists "HKCU:\Software\Classes\message-facebook-com" "URL Protocol"' | Should Be $false
}

}

但是,只有第一个测试通过,而 其他两个通过以下测试,则失败
[-] has invalid key 17ms
Expected: {False}
But was: {Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "Devicexxxx"}
8: 'Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "Devicexxxx"' | Should Be $false
at <ScriptBlock>, <No file>: line 8
[-] has empty value 28ms
Expected: {False}
But was: {Check-RegValueExists "HKCU:\Software\Classes\message-facebook-com" "URL Protocol"}
12: 'Check-RegValueExists "HKCU:\Software\Classes\message-facebook-com" "URL Protocol"' | Should Be $false
at <ScriptBlock>, <No file>: line 12

我什至复制并粘贴了第一个测试,并只修改了字符串以确认但仍然失败。是否存在语法错误或其他错误?

最佳答案

您的问题是因为您已将命令包装在单引号中,从而将它们转换为字符串。结果,您正在测试每个字符串是$ true还是$ false,是否将任何值都视为$ true。

您需要这样做:

Describe 'Check-RegValueExists Tests'{

It "has valid key with valid value" {
Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "DevicePath" | Should Be $true
}

It "has invalid key" {
Check-RegValueExists "HKLM:\Software\Microsoft\Windows\CurrentVersion" "Devicexxxx" | Should Be $false
}

It "has empty value" {
Check-RegValueExists "HKCU:\Software\Classes\message-facebook-com" "URL Protocol" | Should Be $false
}
}

关于unit-testing - 简单的Powershell Pester测试不适用于$ false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47061810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com