Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Haxe bindings for mocha.js & expect.js - simple, flexible, fun javascript test framework for node.js & the browser. (BDD, TDD, QUnit styles via interfaces)

branch: master
README.md

mocha.js-haxe

Haxe bindings for mocha.js & expect.js - simple, flexible, fun javascript test framework for node.js & the browser. (BDD, TDD, QUnit styles via interfaces)

Tested with Haxe 3.0, mocha.js 1.8.1, expect.js 0.2.0, Node.js and Chrome.

GitHub -> https://github.com/rjanicek/mocha.js-haxe
browser tests -> http://rjanicek.github.com/mocha.js-haxe
mocha.js by TJ Holowaychuck - MIT. -> https://github.com/visionmedia/mocha
expect.js by Guillermo Rauch - MIT. -> https://github.com/LearnBoost/expect.js

Use test as a template for new projects.

browser

class Main {
    static function main() {
        Mocha.setup( { ui: Ui.BDD } );
        new MochaSpec();
        Mocha.run();
    }
}

node

class Main {
    static function main() {
        new MochaSpec();
    }
}

test

class MochaSpec {
    public function new() {
        M.describe("Mocha", function () {
            M.it("should test things", function() {
                E.expect(true).to.be.ok();
                true.should().be.ok();
                E.expect(0).to.not.be.ok();
                E.expect(1).toBe(1);
                E.expect(true).to.equal(true);
                E.expect(1).to.eql("1");
                E.expect(5).to.be.a("number");
                E.expect("1.2.3").to.match("[0-9]+\\.[0-9]+\\.[0-9]+");
                E.expect("hello world").to.contain("world");
                E.expect([]).to.have.length(0);
                E.expect([]).to.be.empty();
                E.expect( { a: "b" } ).to.have.property("a", "b");
                E.expect( { a: "b", c: "d" } ).to.only.have.keys("a", "c");
                E.expect(function() { throw "knife"; } ).to.throwException();
                E.expect(1).to.be.within(0, Math.POSITIVE_INFINITY);
                E.expect(5).to.be.greaterThan(3);
                E.expect(1).to.be.lessThan(3);
                E.expect(5).to.be.a("number").and.toBe(5);
            });
        });
    }
}

async

class AsyncSpec {
    public function new() {
        M.it("should test asynchronous code", function(done) {
            var mochaIsCool = 0;
            Timer.delay(function() {
                mochaIsCool++;
                mochaIsCool.should().equal(1);
                done();
            }, 250);
            mochaIsCool.should().equal(0);
        });
    }
}
Something went wrong with that request. Please try again.