Вы находитесь на странице: 1из 3

$actual="Actual value"

$actual | Should Be "actual value" # Test will pass


$actual | Should Be "not actual value" # Test will fail
BeExactly
Compares one object with another for equality and throws if the two obje
cts are not the same. This comparison is case sensitive.
$actual="Actual value"
$actual | Should BeExactly "Actual value" # Test will pass
$actual | Should BeExactly "actual value" # Test will fail
BeGreaterThan
Asserts that a number is greater than an expected value. Uses PowerShell
's -gt operator to compare the two values.
$Error.Count | Should BeGreaterThan 0
BeLessThan
Asserts that a number is less than an expected value. Uses PowerShell's
-gt operator to compare the two values.
$Error.Count | Should BeLessThan 1
Exist
Does not perform any comparison but checks if the object calling
Exist
is presnt in a PS Provider. The object must have valid path synt
ax. It
essentially must pass a Test-Path call.
$actual=(Dir . )[0].FullName
Remove-Item $actual
$actual | Should Exist # Test will fail
Contain
Checks to see if a file contains the specified text. This search is not
case sensitive and uses regular expressions.
Set-Content -Path TestDrive:\file.txt -Value 'I am a file.'
'TestDrive:\file.txt' | Should Contain 'I Am' # Test will pass
'TestDrive:\file.txt' | Should Contain '^I.*file$' # Test will pass
'TestDrive:\file.txt' | Should Contain 'I Am Not' # Test will fail
Tip: Use [regex]::Escape("pattern") to match the exact text.
Set-Content -Path TestDrive:\file.txt -Value 'I am a file.'
'TestDrive:\file.txt' | Should Contain 'I.am.a.file' # Test will pass
'TestDrive:\file.txt' | Should Contain ([regex]::Escape('I.am.a.file'))
# Test will fail
ContainExactly
Checks to see if a file contains the specified text. This search is cas
e sensitive and uses regular expressions to match the text.
Set-Content -Path TestDrive:\file.txt -Value 'I am a file.'
'TestDrive:\file.txt' | Should Contain 'I am' # Test will pass

'TestDrive:\file.txt' | Should Contain 'I Am' # Test will fail


Match
Uses a regular expression to compare two objects. This compariso
n is not case sensitive.
"I am a value" | Should Match "I Am" # Test will pass
"I am a value" | Should Match "I am a bad person" # Test will fail
Tip: Use [regex]::Escape("pattern") to match the exact text.
"Greg" | Should Match ".reg" # Test will pass
"Greg" | Should Match ([regex]::Escape(".reg")) # Test will fail
MatchExactly
Uses a regular expression to compare two objects. This comparison is ca
se sensitive.
"I am a value" | Should MatchExactly "I am" # Test will pass
"I am a value" | Should MatchExactly "I Am" # Test will fail
Throw
Checks if an exception was thrown in the input ScriptBlock.
{
{
{
{

foo } | Should Throw # Test will pass


$foo = 1 } | Should Throw # Test will fail
foo } | Should Not Throw # Test will fail
$foo = 1 } | Should Not Throw # Test will pass

Warning: The input object must be a ScriptBlock, otherwise it is process


ed outside of the assertion.
Get-Process -Name "process" -ErrorAction Stop | Should Throw # Should pa
ss, but the exception thrown by Get-Process causes the test to fail.
BeNullOrEmpty
Checks values for null or empty (strings). The static [String]::IsNullOr
Empty() method is used to do the comparison.
$null
$null
@()
""

|
|
|
|

Should
Should
Should
Should

BeNullOrEmpty # Test will pass


Not BeNullOrEmpty # Test will fail
BeNullOrEmpty # Test will pass
BeNullOrEmpty # Test will pass

USING SHOULD IN A TEST


function Add-Numbers($a, $b) {
return $a + $b
}
Describe "Add-Numbers" {
It "adds positive numbers" {
$sum = Add-Numbers 2 3
$sum | should be 3
}
}
This test will fail since 3 will not be equal to the sum of 2 and 3.

SEE ALSO
Describe
Context
It

Вам также может понравиться