Es klingt wie das, was Sie bevorzugen würden, ist, einen einzelnen Test zu einer Zeit über Karma/Jasmine mit dem Terminal zu führen. Wenn dies korrekt ist, mache ich das, um einzelne Dateitests auszuführen.
Hinweis: Ich benutze Schluck, um Karma aufzuspulen, aber dies sollte immer noch funktionieren, nur mit dem globalen Karma.
Hier ist meine Schluck Methode auch wenn Sie gewählt haben, dass zu verwenden.
gulp.task('karma', function (done) {
karma.start({
configFile: __dirname + '/karma.conf.js'
}, done);
});
In meinem karma.config.js
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
// Note the **setFilesUpForTesting** function below. Just change this.
files: setFilesUpForTesting(),
... the rest of file
} // end of module!!!!!
-> Jetzt unterhalb des Moduls, in den gleichen karma.config.js Datei hinzufügen, die folgende
// ------------------------------------------------------------------ >
// Below code is for running either single or all test files.
// To run a single test, just pass in the test file name like so...
// If the test file name was rs-test-me-now_test.js
// To spool up Karma you would enter
// gulp karma --single-test=rs-test-me-now
// To just run all tests
// gulp karma
var fixedPath = [
'public/js/jquery.js',
'public/js/jquery-ui.min.js',
'public/js/foundation.min.js',
'public/js/angular.min.js',
'public/js/angular-mocks.js',
'public/js/angular-route.min.js',
'public/js/angular-sanitize.min.js',
'public/js/angular-cookies.js'
// all the files you want to include when tests run. I removed most of mine, but left some for reference.
];
var baseTestPath = 'public/test/'; // This is the path from root to your test/spec folder that contains all your tests.
function setFilesUpForTesting(){
fixedPath.push(testPath());
return fixedPath;
}
function testPath(){
return singleTestPath() || fullTestPath();
}
function fullTestPath(){
// If your root folder was butter, and all your tests were labeled
// like my_file_spec.js, and all your specs were in a folder under root
// called bread, then the path below would be
// 'butter/bread/**/*_spec.js' Got it?
return 'public/test/**/*_test.js'; // change this to suit your path.
}
function singleTestPath(){
var passedArgument = process.argv.filter(function(item){ if(/--single-test=/.test(item)){return item; }});
if(isEmpty(passedArgument)){ return false; }
return baseTestPath + '**/*' + fileName(passedArgument) + '_test.js';
// change above to fit your path.
}
function fileName(argument){
if(!argument){ return; }
return argument[0].replace('--single-test=', ''); // Change single-test if you want to.
}
function isEmpty(array){
return array.length === 0;
}
Wenn ich Tests ausführen möchte, führe ich dann einfach die folgenden
Für einzelne Datei Tests schluck Karma --single-Test = Test-me-now
// when test-me-now_test.js is the file name.
// and root/pulblic/test/ has all my test files and test folders.
// or root/bread/butter/ and file is called test-me-now_spec.js as in the other example I gave above.
hoffe, das hilft jemand. Stellen Sie Fragen, wenn Sie es nicht einrichten können.
UPDATE
ich nur Karma von der Kommandozeile verwendet und das funktioniert, wie auch oben bei der Verwendung von großem Schluck angegeben.
Wenn Karma von der Kommandozeile zugänglich ist Sie jetzt tun können, wenn Sie die karma.config.js oben Datei implementieren ...
Hinweis: ich Karma verwenden nicht Lauf starten,
karma start (will run all tests)
// or for a single test file
karma start --single-test=my-test-file-name // but without the _test.js or _spec.js whatever you call your files. I had reasons for doing this, but you can change the functions above to accept the complete file name if needed.
Hinweis:
Sie können als o Ändern Sie die Formulierung nach "-" in --single-test = Stellen Sie nur sicher, dass Sie die Informationen von karma.config.js aktualisieren, die ich geteilt habe.
Dies ist nicht einmal annähernd eine Antwort, aber ich Ich bin nur neugierig. Ich mache mehr als 600 ziemlich schwere Tests, die zufällige DOM-Operationen und asynchrone Wartezeiten in weniger als 2 Sekunden auf einer ziemlich langsamen virtuellen Maschine (1 Kern, 6 GB RAM, Win7) beinhalten. Haben Sie nicht daran gedacht, Ihre Testleistung zu überprüfen? Und könnten Sie bitte definieren, wie lange es dauert, Ihre Tests durchzuführen? –
Der Testcode beinhaltet Websocket-Operationen; Ich habe ein benutzerdefiniertes Nachrichtenübermittlungsschema, das über ws entwickelt wurde und die Einheiten sind, die getestet werden, also keine Möglichkeit, sie zu verspotten; die Clients sprechen mit einem Server, der eingebaute Verzögerungen aufweist, sowie Client-eingebaute Verzögerungen, um bestimmtes Netzwerkverhalten zu simulieren; d. h. Rennbedingungen, wenn Sie versuchen, eine Operation von zwei Clients gleichzeitig usw. auszuführen; Leider müssen diese Tests auch seriell ausgeführt werden, um Rennen mit dem Test-Backend-Server zu vermeiden. Wie auch immer, das hängt nicht mit der Frage zusammen. Ich finde es schwer zu glauben, dass Karma + Jasmin keinen TDD-Workflow bietet – Dyna
FYI; Ich wechselte zu Mocha und verwende den nodeJS-basierten Mocha-Runner, der es mir ermöglicht, einen einzelnen Test auszuführen, indem ich das '-Grep'-Flag auf der Cmdline-Ebene übergebe. Karma + Jasmine Geschichte ist traurig zu sein :( – Dyna