![](/img/trans.png)
[英]Efficient way to run PowerShell Pester tests from Sublime Text
[英]Powershell Core + Pester - Separating tests from src
將函數導入不在同一目錄中的測試的最佳方法是什么?
例子
📁 src
📄 Get-Emoji.ps1
📁 test
📄 Get-Emoji.Tests.ps1
[2] 導入測試函數Pester 認為所有名為.Tests.ps1 的文件都是測試文件。 這是幾乎所有項目都使用的默認命名約定。
測試文件與它們測試的代碼放置在同一目錄中。 每個文件都稱為它測試的 function。 這意味着對於 function Get-Emoji,我們將在同一目錄中擁有 Get-Emoji.Tests.ps1 和 Get-Emoji.ps1。 將測試引用到 Pester 中的函數的最佳方法是什么。
Pester 測試放在 .Tests.ps1 文件中,例如 Get-Emoji.Tests.ps1。 代碼放在 Get-Emoji.ps1 中。
為了使測試代碼可用於測試,我們需要導入代碼文件。 這是通過將文件點源到當前的 scope 來完成的,如下所示:
示例 1
# at the top of Get-Emoji.Tests.ps1 BeforeAll {. $PSScriptRoot/Get-Emoji.ps1 }
示例 2
# at the top of Get-Emoji.Tests.ps1 BeforeAll {. $PSCommandPath.Replace('.Tests.ps1','.ps1') }
我傾向於將我的測試放在一個文件夾中,該文件夾與腳本所在的位置相距一兩個父級別(通常位於命名模塊目錄下,然后位於名為 Private 或 Public 的文件夾中)。 我只是點源我的腳本或模塊,並使用..
以$PSScriptRoot
(當前腳本路徑)作為參考點來引用父路徑。 例如:
\SomeModule\Public\get-something.ps1
中的腳本\Tests\get-something.tests.ps1
中的測試BeforeAll {
. $PSScriptRoot\..\SomeModule\Public\get-something.ps1
}
如果需要考慮跨平台兼容性,請使用正斜杠,Windows 不介意路徑分隔符是正斜杠還是反斜杠。 如果您想確定使用了有效的完整路徑,您也可以首先通過Resolve-Path
運行此路徑,但我通常認為沒有必要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.