Test results do not appear in browser - Grunt-karma

Asked

Viewed 329 times

5

I’m using Grunt and karma to test my project. But when I use the Grunt test command, the results do not appear in the browser nor in the command linda.

The only thing that comes up is this:

inserir a descrição da imagem aqui

This is my karma.conf.js:`//Karma Configuration file // Generated on Mon Mar 31 2014 10:21:42 GMT-0300 (E. South America Standard Time)

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: './',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine','requirejs'],


// list of files / patterns to load in the browser
files: [

  'app/bower_components/jquery/dist/jquery.js',
  'app/bower_components/angular/angular.js',
  'app/bower_components/angular-cookies/angular-cookies.js', 
  'app/bower_components/angular-resource/angular-resource.js', 
  'app/bower_components/angular-sanitize/angular-sanitize.js', 
  'app/bower_components/angular-mocks/angular-mocks.js',      
  'app/scripts/*.js',
  'app/scripts/**/*.js',
  'test/spec/**/*.js'
],

  plugins: [
        'karma-junit-reporter',
        'karma-chrome-launcher',
        'karma-firefox-launcher',
        'karma-jasmine',
        'karma-requirejs'
    ],    


// list of files to exclude
exclude: [

],

// web server port
port: 9876,


// enable / disable colors in the output (reporters and logs)
colors: true,

reporters: ['dots'],


// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_DEBUG,


// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,

    browserNoActivityTimeout: 10000,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Firefox'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

My test file:

describe('Controller: MainCtrl', function () {

  // load the controller's module
  beforeEach(module('AbsenteismoApp'));

  var MainCtrl,
    scope;

  // Initialize the controller and a mock scope
  beforeEach(inject(function ($controller, $rootScope) {
    scope = $rootScope.$new();
    MainCtrl = $controller('MainCtrl', {
      $scope: scope
    });
  }));

  it('deve verificar o tamanho do array expressao scope', function () {
    expect(scope.expressao.length).toBe(1);
  });
});

What will be tested:

 'use strict';

angular.module('AbsenteismoApp')
    .controller('MainCtrl',['$scope',function($scope){

        $scope.expressao = [];
  }]);

This message appears at the command prompt:

WARN [Firefox 27.0.0 (Windows 7)]: Disconnected (1 times), because no message in 10000 ms.

  • Are you running this locally or remotely (Saucelabs/Browserstack)? You can link to Git?

2 answers

2

You are using the Require.js plugin, so it will be necessary manually initialize the tests.

If you are not going to use Require.js, I recommend that you remove references from your configuration file because the plugin changes the default behavior of Karma.

In my application, I do it as follows, using as a basis a file generated by Karma itself:

require.config({
    // Carrega todos os testes
    deps: testFiles,

    paths: ...,
    shim: ...,

    // Inicializa os testes
    callback: window.__karma__.start
});

And, in the configuration file:

files: [
    "portal/js/require/require.config.js",
    "test/modules/cic/unit-main.js",
    { pattern: "js/**/*.js", included: false },
    { pattern: "test/libs/*.js", included: false },
    { pattern: "test/unit/**/*.spec.js", included: false }
],

The Patterns who are with the included: false evening only served by the Karma HTTP server, but will not have the script tags included on the page. Thus, Require.js is in charge of these.

1

For Karma to close your browser you need to have Singlerun turned on. In the very description you have in the code:

// Continuous Integration mode  - Modo de integração continuo
// if true, Karma captures browsers, runs the tests and exits  - caso true o Karma abre, corre testes e fecha o browser

So switch to:

singleRun: true

Browser other questions tagged

You are not signed in. Login or sign up in order to post.