我有一个在自动化过程中被操纵的json文件,我已经为它创建了一个单元测试,它工作得很好,但是我正在访问文件系统,这对我来说不是一条路。然后我发现了纠缠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来测试这个案例?
发布于 2021-03-11 22:21:51
我将向函数$userFilePath添加一个参数Set-User,这样您就可以通过一个测试路径。为该参数定义一个默认值,这样您就不需要为常规使用而更改调用方代码。
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的正确默认值。
https://stackoverflow.com/questions/66590731
复制相似问题