2013-06-25 15 views
30

Mam dość proste karma.config.js złożyćpotrzebna dla prawidłowego reporter karma jaśminu

basePath = '../'; 


files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 
    'js/lib/angular*.js', 
    'test/lib/angular/angular-mocks.js', 
    'js/**/*.js', 
    'test/unit/**/*.js' 
]; 

autoWatch = true; 
browsers = ['PhantomJS']; 


Kiedy biegnę karma start config/karma.conf.js --single-run Dostaję następujący wynik

$ karma start config/karma.conf.js --single-run 
[2013-06-24 23:47:08.750] [DEBUG] config - autoWatch set to false, because of singleRun 
INFO [karma]: Karma server started at http://localhost:9876/ 
INFO [launcher]: Starting browser PhantomJS 
INFO [PhantomJS 1.9 (Mac)]: Connected on socket id LwMoWxzIbSUuBsvIqB_m 
PhantomJS 1.9 (Mac): Executed 6 of 6 SUCCESS (0.073 secs/0.02 secs) 

mam szukałem czegoś, co mogłoby mi powiedzieć, jak uzyskać wyniki testów, które są rejestrowane (np. SUCCESS Unit: services myService should behave)

Jedyny sposób, jaki widzę wynikiem testów jest otwarcie Chrome i kliknięcie "Debuguj", a następnie wyświetl konsolę narzędzi programistów. Chcę, aby wiadomości były wylogowywane do terminala, ale nie mogę wymyślić, jak to działa.

+1

Okropna nazwa dla tego pytania – ErichBSchulz

+2

Tak. Jeśli dobrze pamiętam, wściekłem się wpisałem ten tytuł po tym, jak starałem się go zrozumieć zbyt długo. To dobrze, że Google szuka czegoś więcej niż tytułów. – blockloop

+0

@ brettof86 Ktoś zaklął tytuł tego pytania. Oczywiście nie ma nic wspólnego z HTMLem podczas czytania samego pytania. Zamierzałem spróbować zastąpić tytuł, ale po zastanowieniu wydaje mi się, że nie rozumiem wystarczająco dużo pytania, aby to zrobić. (Niejasne jest dla mnie, jeśli szukasz prostego mechanizmu raportowania lub chcesz uchwycić pewną formę danych wyjściowych z samego testu). Czy mógłbyś to zmienić? – jpmc26

Odpowiedz

64

Poprawiono instalując karma-spec-reporter

npm install karma-spec-reporter --save-dev

i dodając to moje karma.config.js

reporters: ['spec'],

Według karma documentation

Domyślnie, karma ładunku za Moduły NPM, które są rodzeństwem, a ich nazwa pasuje do karma- *.

ale niektórzy użytkownicy musieli dodać następujące ich config

plugins: ['karma-spec-reporter']

+6

Nie zadziałało to dla mnie, dopóki nie określiłem w pliku karma.conf.js karma-spec-reporter jako wtyczki; to jest jak mój plugins tablica wygląda wtyczek: [ 'karma-chrom-launcher', 'karma-reportaż' 'karma-firefox-launcher', 'karma-jaśmin' 'karma-JUnit-reporter' , 'karma-spec-reporter' ], notatka karma-spec-reporter na końcu –

+0

Tak, musisz powiedzieć configowi, że używasz tej wtyczki. – blockloop

+1

Jeśli wszystkie twoje wtyczki zaczynają się od "karma", to nie musisz odwoływać się do żadnego z nich. Domyślnym zachowaniem jest ładowanie wszystkich wtyczek "karma- *". http://karma-runner.github.io/0.12/config/plugins.html –

1

Oto moja robocza (draft) konfiguracja bez sekcji „wtyczek” (faktycznie nie w pełni zrozumieć, dlaczego należy muszę je określić ...):

package.json

"devDependencies": { 
    [...] 
    "grunt-karma": "~0.9.0", 
    "karma": "~0.12.24", 
    "karma-jasmine": "~0.2.3", 
    "karma-chrome-launcher": "~0.1.5", 
    "karma-phantomjs-launcher": "~0.1.4", 
    "karma-spec-reporter": "0.0.13" 
    } 

karma.conf.js

module.exports = function (config) { 
    config.set({ 
     frameworks: ['jasmine'], 
     reporters: ['spec'], 
     browsers: ['PhantomJS'] 
    }); 
}; 

Gruntfile.js

karma: { 
     options: { 
      configFile: 'karma.conf.js', 
      files: [ 
       'app/libs/angular.js', 
       'app/libs/angular-resource.js', 
       'app/libs/angular-route.js', 
       [...] 
       'app/modules/**/*-spec.js' 
      ] 
     }, 
     unit: { 
      singleRun: true 
     } 
    } 

Teraz gdy uruchamiam grunt karma wiadomości z *-spec.js plików (describe('message', function() ...)) są wyświetlane ładnie w konsoli.

1

Jeszcze jeden szczegół - jeśli pozostawić domyślną reportera 'postępu' w karma.config.js, jak poniżej:

reporters: ["progress", "spec"] 

lub inny reporter konsola, w "Spec" Wyjście reporter wygrał” t działa.

Powinieneś przechowywać tylko "spec", lub "spec" z innymi reporterami przeglądarki. Na przykład:

reporters: ["spec", "coverage"] 
Powiązane problemy