Мне кажется, Jasmine для JavaScript идеально подойдет. Тест выглядит так (кусок теста из проекта
PEGjs):
describe("compiler pass |generateBytecode|", function() {
var pass = PEG.compiler.passes.generate.generateBytecode;
function bytecodeDetails(bytecode) {
return {
rules: [{ bytecode: bytecode }]
};
}
describe("for rule", function() {
it("generates correct bytecode", function() {
// Функция toChangeAST -- специально написанное расширение.
// Так можно написать любую тестирующую функцию
expect(pass).toChangeAST('start = "a"', bytecodeDetails([
14, 0, 2, 2, 18, 0, 19, 1 // <expression>
]));
});
});
});
Из удобств -- тесты можно запускать как под Node.js, так и в браузере, выглядит удобно.