Я написал очень простую функцию под названием «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
Я даже скопировал и вставил первый тест и изменил только строку для подтверждения, но все еще не работал. Есть ли синтаксическая ошибка или что-то еще?
Should be $true
, тогда тесты пройдут !!! что не имеет логического смысла? $ true - это просто проверка на появление какого-либо значения или успешный запуск функции ??? - person user2743945   schedule 01.11.2017Check-RegValueExists
функцию в свой вопрос с помощью редактирования, чтобы мы могли видеть, что она делает. Вы должны убедиться, что он возвращает $ true или $ false, а не строки true или false. - person Mark Wragg   schedule 01.11.2017