我最近发现我不需要使用 Import-Module 来使用我的高级 powershell 函数,我可以在 ps1 文件中匿名定义一个函数。
不幸的是,我的 Pester 单元测试被破坏了。我似乎无法再在下面的清单中模拟对 New-Object 的调用了。通常,我会点源以下代码并在我的范围内定义函数 Get-StockQuote。现在点源 ps1 文件无济于事,因为无论如何我都通过文件名调用该函数。
如何使用 Pester 通过 New-Object 的模拟实现来测试以下代码?
注意:对于这个问题来说,这段代码显然是微不足道的,我正在使用的代码测试确实需要一个新对象的模拟实现。
# Source listing of the file: Get-StockQuote.ps1
<#
.Synopsis
Looks up a stock quote
.Description
Uses the yahoo api to retrieve a recent quote for a given stock.
.Parameter Symbol
The stock trading symbol
.Example
Get-StockQuote.ps1 -Symbol AMZN
Prints the following line to the output
440.84
#>
[CmdletBinding()]
Param(
[parameter(Mandatory=$false)]
[string]$Symbol
)
BEGIN {
Set-StrictMode -Version 1
}
PROCESS {
(New-Object System.Net.WebClient).DownloadString("http://finance.yahoo.com/d/quotes.csv?s=$Symbol&f=l1")
}
END {
}