Próbuję zaimplementować RSpec/Jasmine jak ramy BDD w Powershell (lub przynajmniej zbadać potencjalne problemy z ich tworzeniem).PowerShell - blok skryptu wykonywania w określonym zakresie
Obecnie mam problemy z wdrażaniem prostych funkcji przed/po. Biorąc
$ErrorActionPreference = "Stop"
function describe()
{
$aaaa = 0;
before { $aaaa = 2; };
after { $aaaa; }
}
function before([scriptblock]$sb)
{
& $sb
}
function after($sb)
{
& $sb
}
describe
wyjście jest 0, ale chciałbym go mieć 2. Czy istnieje jakiś sposób, aby osiągnąć to w PowerShell (krótka dokonywania $ aaaa globalny, przejeżdżające zakresów nadrzędnych w blokach skryptu do $ aaaa znaleziono , czyniąc $ aaaa "obiektem" i innymi brudnymi hackami :))
To, co chciałbym najbardziej, to sposób na wywołanie bloku skryptu w jakimś innym zakresie, ale nie mam pojęcia, czy w ogóle jest to możliwe . Znalazłem interesujący przykład na https://connect.microsoft.com/PowerShell/feedback/details/560504/scriptblock-gets-incorrect-parent-scope-in-module (patrz obejście), ale nie jestem pewien, jak to działa i czy pomaga mi w jakikolwiek sposób.
TIA
Czy spojrzał na Pester: https://github.com/scottmuc/pester – manojlds
Tak, to nie jest tak jak RSpec/Jasmine, prawdopodobnie ze względu na problemy opisane powyżej. Mam bardzo ograniczone doświadczenie z Pester, ale IMHO Pester to bardzo ograniczony framework, no after/before, brak zagnieżdżonych opisów, zepsutej implementacji matcherów itp. – mbergal
Zastanów się nad wniesieniem wkładu :) – manojlds