Ich habe ein PowerShell-Testskript Common.tests.ps1
mit Pester gegen einige Funktionen in einem PowerShell-Skript Common.ps1
in demselben Verzeichnis erstellt. Es gibt ein TestInitializer.ps1
-Skript, ebenfalls im selben Verzeichnis, das das Microsoft.Xrm.Data.PowerShell
-Modul zum Erstellen und Abrufen von Datensätzen in einer Dynamics CRM-Instanz verwendet.PowerShell-Modul kann nicht geladen werden, wenn Pester-Test in Visual Studio ausgeführt wird
Wenn die Powershell-Skript-Test von Visual Studio ausgeführt wird, schlägt der Test im Test Explorer mit einer Nachricht:
CommandNotFoundException: Das Modul 'Microsoft.Xrm.Data.PowerShell' kann nicht geladen werden. Führen Sie für weitere Informationen "Import-Module Microsoft.Xrm.Data.PowerShell" aus.
Derselbe Test wird bei der Ausführung von der PowerShell ISE jedoch ohne Problem ausgeführt. Dies scheint so zu sein, als wäre das Modul nicht für die Instanz installiert, wie sie von Visual Studio ausgeführt wird (ich habe das bestätigt, wenn Get-Module -ListAvailable
ausgeführt wurde und die Ausgabe das Modul Microsoft.Xrm.Data.PowerShell
für den Visual Studio-Test nicht enthält), obwohl sogar explizite Aufrufe wie : Import-Module Microsoft.Xrm.Data.PowerShell -Global -Force
scheint nicht das Modul während der Skriptausführung mit Visual Studio zu laden.
Hier Common.test.ps1
:
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
. $here\Common.ps1
. $here\TestInitializer.ps1
Describe "SelectionToSingleCharString" {
Context "StringTransforms" {
It "Retrieves a CRM record and uses the optionset value to retrieve a single character" {
SelectionToSingleCharString($crmRecord.new_type) | Should Be "I"
}
}
}
Snippet von TestInitializer.ps1
:
# Whether or not this is uncommented does not matter
#Import-Module "$env:SystemRoot\System32\WindowsPowerShell\v1.0\Modules\Microsoft.Xrm.Data.PowerShell\Microsoft.Xrm.Data.PowerShell.psd1" -Global -Force
#$modules = Get-Module -ListAvailable
#Write-Host $modules
# Failing here
Microsoft.Xrm.Data.PowerShell\Connect-CrmOnPremDiscovery -ServerUrl $loginServerUrl -OrganizationName $loginOrgName -Credential $cred
ich stattdessen den Test entwerfen kann Mock zu verwenden, anstatt wirklich versuchen \ lesen Aufzeichnungen zu erstellen, wenn auch nicht in der Lage zu laden externe Module und Ausführung in Visual Studio wäre limitierend.
Dies ist in Visual Studio 2015, und ja, es scheint, der Test wurde in einem 32-Bit-Prozess ausgeführt. Als ich "Install-Module Microsoft.Xrm.Data.PowerShell" in der Windows PowerShell (x86) -Umgebung ausgeführt und den Test erneut ausgeführt hatte, war es erfolgreich. –