Po prostu grubsza:
- Tworzenie otoki wokół karmy utworzyć obiekt konfiguracji opartej o kryteria
- w tym wypadku będzie to obiekt konfiguracja od rodzaju przeglądarki Chyba
- można mieć „szablon konfiguracji” zapisanego w pliku
karma.conf.js
bez własności przeglądarek
- Jest sposób programowy do „wzbogacenia” Ten szablon dodając więcej właściwości
- Wypełnianie kolejce z tych konfiguracji obiektów (może to być prosta tablica)
- Użyj karma API aby uruchomić serwer karma przekazując odpowiednią konfigurację za każdym razem
Tip: można mieć w tym momencie konfiguracji „wrapper” do przystanku lub prowadzić czy uruchomiona instancja zmierzyć masę błędów
Ten fragment kodu pokazuje, jak załadować i wypełnij konfigurację szablonu:
function getConfigTemplate(path){
var config = {
// Maybe you want to add/remove some files from the list
// based on some criteria
files: [...],
// Path of the template file
configFile: path
}
return config;
}
var template = getConfigTemplate('/path/to/the/file');
// Here I can append more stuff
template.browsers = ['Chrome']
Uwaga: strategię scalania używany w karmie dla dwóch konfiguracjach działa następująco:
- Jeśli właściwość jest w szablonie, a następnie przechodzi bezpośrednio do ostatecznej konfiguracji. Jeśli właściwość nie znajduje się w szablonie, to obiekt konfiguracji "opakowania" jest wyszukiwany dla tej właściwości.
- Jeśli właściwość w szablonie i dodać więcej na tylko opakowanie pierwszy będzie używany, a drugi będzie ignorowany.
Ten kod może być użyty zamiast do „łańcuch” serwery Karma:
var currentServer = 0;
var configs = [ ... ];
function startKarmaServer(config, callback){
karma.server.start(config, function (exitCode){
if(exitCode){
// an error occurred
// stop karma!
} else {
currentServer++;
callback();
}
});
}
function startServers(){
// here some code to run the karma servers in series
}
Polecam async.js dla funkcji startServers
.
Jeśli używasz starszej wersji karmy (0.10
lub niższej), możesz poszukać, at this fix, aby zamknąć serwer WWW po wykonaniu.
Należy również zauważyć, że flaga integracji ciągłej (autoWatch
) powinna być wyłączona, aby połączenie mogło działać.
Cześć, jak się w końcu rozwiązać ten problem? – Malki