首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用现有的json文件对Pester和TestDrive进行测试

使用现有的json文件对Pester和TestDrive进行测试
EN

Stack Overflow用户
提问于 2021-03-11 21:22:24
回答 1查看 215关注 0票数 1

我有一个在自动化过程中被操纵的json文件,我已经为它创建了一个单元测试,它工作得很好,但是我正在访问文件系统,这对我来说不是一条路。然后我发现了纠缠TestDrive,但我不知道如何在我的用例中工作。

这是我的示例json文件(user.json):

代码语言:javascript
复制
{
    "name":"",
    "age": ""
}

这是我的函数(SetUser.ps1):

代码语言:javascript
复制
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):

代码语言:javascript
复制
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来测试这个案例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 22:21:51

我将向函数$userFilePath添加一个参数Set-User,这样您就可以通过一个测试路径。为该参数定义一个默认值,这样您就不需要为常规使用而更改调用方代码。

代码语言:javascript
复制
function SetUser {
    param (
        $Name,
        $Age,
        $userFilePath = "$PSScriptRoot/user.json"
    )
    
    $user = Get-Content $userFilePath -Raw | ConvertFrom-Json
    $user.name = $Name
    $user.age = $Age
}

测试代码:

代码语言:javascript
复制
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
    }
}

正常代码:

代码语言:javascript
复制
SetUser -Name Foo -Age 42   # $userFilePath defaults to "$PSScriptRoot/user.json"

您还可能希望添加一个Should -HaveParameter测试用例,以检查参数-userFilePath的正确默认值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66590731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档