1

Visual Studio 2015内に「Powershell Module Project」を作成し、モジュールの一部の機能を記述しました。 .psm1ファイルを変更し、Pesterフレームワーク(.test.ps1ファイル)でこれらの変更を単体テストしようとすると、テスト中に新しい変更が適用されません。Visual Studioが適用されないPesterユニットのテスト実行時にPowershellモジュールの変更が発生する

  • を "クリーンソリューション"、および "ソリューションのビルド"
  • "プロジェクトのアンロード" と「リロード "ソリューションのリビルド":これは私が試したのVisual Studio 2015およびVisual Studio 2017

    に起こりますプロジェクト」

  • 『ソリューションを閉じる』と 『オープンソリューション』

私がこれまでに見つけた唯一の解決策は、IDEを再開することです。

どこからこの問題が発生する可能性がありますか?

答えて

1

既にロードされているPowerShellモジュールを変更すると、モジュールがメモリにロードされているため、これらの変更は現在実行中のPowerShellセッションに自動的に適用されません。(Import-Module <modulename>をPowerShellはモジュールが既に読み込まれているとみなし、何もしません)。

回避方法は、最初にRemove-Moduleを使用してから、Import-Moduleでリロードするか、Import-Module <modulename> -Forceを使用します。

これらのソリューションのいずれかをPesterテストファイルの先頭に追加して、モジュールをテストする前に常にロードすることができます。

+0

ありがとうございました!今私はなぜこれが起きているのかを知る。私は初めて "--Force"を実行するとき、 "Remove-Module"が問題に遭遇するかもしれないので、 "--Force"を使うことに決めました。 – dcfyg

+0

'Remove-Module'が好まれる理由はいくつかありますが、私は問題を引き起こす' -Force'メソッドを見つけたことがありません。 If(get-module ){remove-module } 'がまだロードされていない場合にスローされるのを止めることができます。 –

関連する問題