我有一个用于在 IIS 中设置网站的 PowerShell 脚本。它包含以下功能:
function Set-IisWebsiteBinding (
[Parameter(Mandatory = $true)]
[string]$SiteName,
[Parameter(Mandatory = $true)]
[Microsoft.Web.Administration.Site]$Website,
[Parameter(Mandatory = $true)]
[array]$WebsiteBindingSettings
)
{
# Set up website bindings ...
}
我正在尝试在 Pester 中为该函数编写测试。我想创建一个虚拟的 $Website 对象传递给被测函数。问题是该类型没有构造函数。如果没有构造函数Microsoft.Web.Administration.Site
,如何在 PowerShell 中创建该类型的对象?Microsoft.Web.Administration.Site
我可以通过 创建一个,IISServerManager.Sites.CreateElement()
但我想避免依赖于使用真实的IISServerManager
。或者,我可以去掉函数参数 的类型强制转换$Website
,这样测试代码就可以传入一个哈希表而不是 Microsoft.Web.Administration.Site 对象。不过,我更倾向于保留类型强制转换,这样脚本的未来维护者就能清楚地知道对象的类型$Website
。
有没有办法解决缺少构造函数的问题,而不使用实数IISServerManager
或删除类型强制?