Estoy tratando de implementar RSpec/Jasmine como BDD framework en Powershell (o al menos investigar los posibles problemas al crear uno).PowerShell: ejecutar el bloque de secuencia de comandos en el ámbito específico
Actualmente estoy teniendo problemas para implementar funciones simples antes/después. Dada
$ErrorActionPreference = "Stop"
function describe()
{
$aaaa = 0;
before { $aaaa = 2; };
after { $aaaa; }
}
function before([scriptblock]$sb)
{
& $sb
}
function after($sb)
{
& $sb
}
describe
la salida es 0, pero me gustaría que fuera 2. ¿Hay alguna manera de lograrlo en Powershell (abreviatura de hacer $ AAAA mundial, atravesando los alcances de los padres en los bloques de script hasta que se encontró $ AAAA , lo que hace que $ aaaa sea un "objeto" y otros hackes sucios :))
Lo que idealmente me gustaría es una forma de invocar un bloque de script en algún otro ámbito, pero no tengo ni idea de si es posible en absoluto . Encontré un ejemplo interesante en https://connect.microsoft.com/PowerShell/feedback/details/560504/scriptblock-gets-incorrect-parent-scope-in-module (ver solución alternativa), pero no estoy seguro de cómo funciona y si me ayuda de alguna manera.
TIA
Has mirado Pester: https://github.com/scottmuc/pester – manojlds
Sí, no es como RSpec/Jasmine, probablemente debido a los problemas descritos anteriormente. Tengo una experiencia muy limitada con Pester, pero en mi humilde opinión Pester es un marco muy limitado, sin after/before, sin descripciones anidadas, implementación de matcher roto, etc. – mbergal
Considere contribuir luego :) – manojlds