使用现有 json 文件通过 Pester 和 TestDrive 进行测试
Use existing json file to test with Pester and TestDrive
我有一个 json 文件,它在自动化过程中被操纵,我已经为它创建了一个单元测试,它工作得很好,但我正在访问文件系统,这对我来说不是路要走。然后我发现了 Pester TestDrive,但我不明白如何让它在我的用例中工作。
这是我的示例 json 文件 (user.json
):
{
"name":"",
"age": ""
}
这是我的函数 (SetUser.ps1
):
function SetUser {
param (
$Name,
$Age
)
$userFilePath = "$PSScriptRoot/user.json"
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name = $Name
$user.age = $Age
}
这是我当前的测试 (SetUser.Test.ps1
):
Describe "SetUser" {
It "Returns expected output" {
# Arrange
$userFilePath = "$PSScriptRoot/user.json"
$name = "Some Random User Name"
$age = 30
# Act
SetUser -Name $name -Age $age
# Assert
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name | Should -Be $name
$user.age | Should -Be $age
}
}
如何使用 TestDrive 测试此案例?
我会在函数 Set-User
中添加一个参数 $userFilePath
以便您可以通过测试路径。为此参数定义一个默认值,这样您就不需要更改调用方代码即可正常使用。
function SetUser {
param (
$Name,
$Age,
$userFilePath = "$PSScriptRoot/user.json"
)
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name = $Name
$user.age = $Age
}
测试代码:
Describe "SetUser" {
It "Returns expected output" {
# Arrange
$userFilePath = "TestDrive:/user.json"
$name = "Some Random User Name"
$age = 30
# Act
SetUser -Name $name -Age $age -userFilePath $userFilePath
# Assert
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name | Should -Be $name
$user.age | Should -Be $age
}
}
普通代码:
SetUser -Name Foo -Age 42 # $userFilePath defaults to "$PSScriptRoot/user.json"
您可能还想添加一个 Should -HaveParameter
测试用例来检查参数 -userFilePath
.
的正确默认值
我有一个 json 文件,它在自动化过程中被操纵,我已经为它创建了一个单元测试,它工作得很好,但我正在访问文件系统,这对我来说不是路要走。然后我发现了 Pester TestDrive,但我不明白如何让它在我的用例中工作。
这是我的示例 json 文件 (user.json
):
{
"name":"",
"age": ""
}
这是我的函数 (SetUser.ps1
):
function SetUser {
param (
$Name,
$Age
)
$userFilePath = "$PSScriptRoot/user.json"
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name = $Name
$user.age = $Age
}
这是我当前的测试 (SetUser.Test.ps1
):
Describe "SetUser" {
It "Returns expected output" {
# Arrange
$userFilePath = "$PSScriptRoot/user.json"
$name = "Some Random User Name"
$age = 30
# Act
SetUser -Name $name -Age $age
# Assert
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name | Should -Be $name
$user.age | Should -Be $age
}
}
如何使用 TestDrive 测试此案例?
我会在函数 Set-User
中添加一个参数 $userFilePath
以便您可以通过测试路径。为此参数定义一个默认值,这样您就不需要更改调用方代码即可正常使用。
function SetUser {
param (
$Name,
$Age,
$userFilePath = "$PSScriptRoot/user.json"
)
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name = $Name
$user.age = $Age
}
测试代码:
Describe "SetUser" {
It "Returns expected output" {
# Arrange
$userFilePath = "TestDrive:/user.json"
$name = "Some Random User Name"
$age = 30
# Act
SetUser -Name $name -Age $age -userFilePath $userFilePath
# Assert
$user = Get-Content $userFilePath -Raw | ConvertFrom-Json
$user.name | Should -Be $name
$user.age | Should -Be $age
}
}
普通代码:
SetUser -Name Foo -Age 42 # $userFilePath defaults to "$PSScriptRoot/user.json"
您可能还想添加一个 Should -HaveParameter
测试用例来检查参数 -userFilePath
.