PowerShellスクリプトCommon.ps1
の一部の機能に対して、Pesterを使用してPowerShellテストスクリプトCommon.tests.ps1
を作成しました。同じディレクトリにもTestInitializer.ps1
スクリプトがあり、Microsoft.Xrm.Data.PowerShell
モジュールを使用してダイナミックCRMインスタンスにレコードを作成して取得します。Visual StudioでPesterテストを実行しているときにPowerShellモジュールを読み込めません
のVisual StudioからPowerShellのテストスクリプトを実行すると、テストは、メッセージとともにテストExplorerで失敗:
CommandNotFoundException:モジュールのMicrosoft.Xrm.Data.PowerShell」はロードできませんでした。詳細については、「Import-Module Microsoft.Xrm.Data.PowerShell」を実行してください。
PowerShell ISEから実行した場合と同じテストが問題なく実行されます。これは、モジュールがVisual Studioで実行されているようにインスタンス用にインストールされていないかのように見えます(Get-Module -ListAvailable
を実行したときにこれを確認し、出力にVisual StudioテストのMicrosoft.Xrm.Data.PowerShell
モジュールが含まれていないことを確認しました)。 : Import-Module Microsoft.Xrm.Data.PowerShell -Global -Force
Visual Studioでのスクリプト実行中にモジュールをロードしていないようです。ここで
はCommon.test.ps1
です:TestInitializer.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"
}
}
}
スニペット:
# 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
読み込むことができないのに、私が代わりに、レコードを読み取る\代わりに、実際に作成しようとしたのモックを使用するようにテストを設計することができます外部モジュールとVisual Studioで実行すると制限されます。
これはVisual Studio 2015にあり、テストが32ビットプロセスで実行されているようです。 Windows PowerShell(x86)環境で 'Install-Module Microsoft.Xrm.Data.PowerShell'を実行し、テストを再実行すると成功しました。 –