dimanche 4 octobre 2015

Mocha calling callback after done()

I am aiming for ease of use in my unit tests, I have created a master_test.js file that I will include below. In it, I simply require other test.js files as a function and run them. An issue I had is that Mocha does not detect any unit tests to be run unless I encase my startup in a describe() block, so I am forced to have a master describe encase my application to resolve that. My problem now is that in order to run the other tests, I have to call a callback() after a done(). Is there any easy way to fix my problem?

    function app_setup() {
    options.database = 'testing';

    it('app launched successfully', function(done) {
        require('../app.js').initialize(0, options, function(err, app) {

            remove_all_entities(function() {
                app.set('port', port);
                var server = app.listen(app.get('port'), function() {
                    console.log('Express server listening on port ' + server.address().port);

                    //ISSUE LOCATION, NEED TO CALL run_tests() callback after done()//

                    done();
                    run_tests();

                });
            });
        });
    });
}

function run_tests() {
    var database = require('../database.js');

    var entity_controller_test = require('./controllers/entity_controller_test.js').entity_controller_test;
    var login_test = require('./controllers/login_test.js').login_test;
    var token_access_test = require('./controllers/token_access_test.js').token_access_test;
    var token_auth_test = require('./controllers/auth_token_test.js').token_auth_test;
    var business_rules_insert = require('./business_rules/basic_database_rules.js').business_rules_insert_test;
    var logout_test = require('./controllers/logout_test.js').logout_test;
    var schema_override = require('./business_rules/schema_overrides').schema_overrides;
    var aggregation_test = require('./entity_specific/aggregation').aggregation_test;


    var tests = [login_test, aggregation_test, logout_test];

    async.series(tests, function() {
        test_teardown(done);
    });
} 

function test_teardown(done) {
    remove_all_entities(done);
};

Aucun commentaire:

Enregistrer un commentaire