Ci sono parecchi framework per il testing di codice javascript in giro ma la maggior parte richiedono un browser per poter eseguire i test.
Dato che ho necessità di testare delle classi che utilizzo per scriptare Photoshop ne ho dovuto cercare uno che potesse funzionare anche senza browser.

La scelta è caduta su jsUnity.
Purtroppo non ho potuto utilizzarlo così com’è ma è stato necessario fare qualche piccola modifica per farlo funzionare correttamente.

In particolare ho dovuto modificare il metodo splitFunction in questo modo:

function splitFunction(fn) {
var fnSource = fn.toSource();
var re = 0;
re = new RegExp();
var regExString = “”;

regExString = “^\\(function\\s*([^\\(\\s]*?)\\s*\\(.*\\)”;
re.compile(regExString);
var tokens = re.exec(fnSource);

if (!tokens) {
throw “Invalid function.”;
}
var fnName = tokens[1].length ? tokens[1] : undefined;

regExString = “\\s?\\{(.*)\\)?\\}\\)?$”;
re.compile(regExString);
var tokens = re.exec(fnSource);
if (!tokens) {
throw “Invalid function.”;
}

var fnBody = tokens[1];
return {
name: fnName,
body: fnBody
};
}

So che la regular expression per estrazione del codice è abbastanza diversa da quella usata nel codice originario ma al momento non ho notato effetti collaterali nella mia modifica.