Skip to content

Instantly share code, notes, and snippets.

@freedmand
Last active November 11, 2024 15:45
Show Gist options
  • Save freedmand/e9457a1ddfd2f2c56ebbf7a186e43216 to your computer and use it in GitHub Desktop.
Save freedmand/e9457a1ddfd2f2c56ebbf7a186e43216 to your computer and use it in GitHub Desktop.
JavaScript unit testing in under 30 lines
const PASS = ['32']; // green
const FAIL = ['31', '1']; // red, bold
function logStyle(ansiEscapeCodes, text) {
console.log(`\x1b[${ansiEscapeCodes.join(';')}m${text}\x1b[0m`);
}
class Tester {
constructor() {}
test(name, fn) {
try {
fn.bind(this)();
logStyle(PASS, `${name} PASSED`);
}
catch (e) {
logStyle(FAIL, `${name} FAILED:
${e}`);
}
}
assertEquals(arg1, arg2) {
if (arg1 != arg2) throw new Error(`Expected ${arg1} to equal ${arg2}`);
}
assert(condition) {
if (!condition) throw new Error(`Expected ${condition} to be truthy`);
}
}
/*
Usage:
const t = new Tester();
t.test('testName', () => {
t.assertEquals('dog'.length, 3); // will pass
});
t.test('anotherTestName', () => {
t.assert(false); // will fail
});
*/
@o0101
Copy link

o0101 commented Nov 5, 2018

Good code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment