Question

I already have grunt-contrib-qunit set up. My Gruntfile.js includes something like this

qunit: { files: ['test/*.html'] }

Now I can run grunt qunit and all my tests run.

Question: how can I run just one single test without running all of them? Is there a way I can overload the value of files from the command line?

Was it helpful?

Solution

You definitely need to look into grunt-contrib-qunit and grunt-contrib-connect (https://github.com/gruntjs/grunt-contrib-qunit and https://github.com/gruntjs/grunt-contrib-connect) as the tandem will provide you with a headless phantom and a local webserver.

UPDATE - as for running just one specific test, you could write something like this, listing your tests as separate targets for your qunit task:

grunt.initConfig({
  qunit: {
    justSomething: ['test/justsomething.html'],
    justSomethingElse: ['test/justsomethingelse.html'],
    all: ['test/*.html']
  }
});

Then you can call grunt qunit:justSomething, or grunt qunit:all - this is not specific to qunit, though - see http://gruntjs.com/configuring-tasks

Now, if you would really like to use the target to specify a test name, you would go with something like:

module.exports = function(grunt) {
    grunt.loadNpmTasks('grunt-contrib-qunit');

    grunt.initConfig({
            qunit: {
                    all: ['test/**/*.html']
            }
    });

    grunt.task.registerTask('foo', 'A sample task that run one test.', function(testname) {
            if(!!testname)
                    grunt.config('qunit.all', ['test/' + testname + '.html']);
            grunt.task.run('qunit:all');
    });
}

Then call grunt foo:testname.

Yet again, this is not specific to qunit - but rather grunt task writing.

Hope that (finally) helps.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top