我正在测试一个 PowerShell 脚本。我想在不执行整个脚本的情况下测试单个函数。我不确定这是否是预期的用例或受支持,我在网上搜索时找不到好的答案
sut.ps1:
Param(
[Parameter(Mandatory = $true,
Position = 0)]
[ValidateNotNullOrEmpty()]
[string] $Message
)
function fut([string] $argument) {
Write-Host $argument
}
function Main() {
fut($Message)
}
Main
sut.tests.ps1:
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
. "$here\$sut" "Message"
Describe "fut" {
It "does something useful" {
fut 'beer'
}
}
输出
Message
Describing fut
beer
[+] does something useful 385ms
Tests completed in 385ms
现在我可以嘲笑“啤酒”,因为它在描述块中运行。但我不能嘲笑“消息”,因为当我点源脚本时脚本开始执行。
就我而言,“消息”是我不想执行的操作。
我在 Windows 10 15063 上。