Powershell で BDD フレームワークのような RSpec/Jasmine を実装しようとしています (または、少なくともそれを作成する際の潜在的な問題を調査しています)。
現在、単純なビフォア/アフター機能の実装に問題があります。与えられた
$ErrorActionPreference = "Stop"
function describe()
{
$aaaa = 0;
before { $aaaa = 2; };
after { $aaaa; }
}
function before( [scriptblock]$sb )
{
& $sb
}
function after( $sb )
{
& $sb
}
describe
出力は0ですが、2にしたいと思います。Powershellでそれを達成する方法はありますか($aaaaをグローバルにし、$aaaaが見つかるまでスクリプトブロックで親スコープをトラバースし、$aaaaを「オブジェクト」にします)およびその他の汚いハック:) )
私が理想的に望むのは、スクリプト ブロックを他のスコープで呼び出す方法ですが、それが可能かどうかはまったくわかりません。https://connect.microsoft.com/PowerShell/feedback/details/560504/scriptblock-gets-incorrect-parent-scope-in-moduleで興味深い例を見つけました(回避策を参照)。それが何らかの形で私を助けるなら。
ティア