I seem to be having a problem getting my Jasmine unit tests to actually execute. I have verified that all my scripts are getting loaded by setting the logLevel to LOG_DEBUG. My unit test is identical to the services test @ https://github.com/angular/angular-seed/blob/master/test/unit/servicesSpec.js.
Also, I have used Testacular (before it was renamed to Karma) and I don't recall having this issue. I seem to get Chrome to run, but I have to manually hit a "Debug" button. Even when I hit this button my tests don't run.
System details:
Here's my module code (Scripts/main.js):
angular.module('sb.services', []).value('version', '0.0.1').value('amplify', amplify);
angular.module('sb.directives', []);
angular.module('sb.filters', []);
angular.module('sb.controllers', []).controller('SbController', [
'$scope',
'amplify',
function ($scope, amplify) {
$scope.message = 'Hello World! (amplify exists?=' + !!amplify + ')';
}
]);
angular.module('sb', [
'sb.services',
'sb.directives',
'sb.filters',
'sb.controllers'
]);
Here's my spec (Test/unit/servicesSpec.js):
'use strict';
describe('my services', function () {
beforeEach(module('sb.services'));
describe('version', function () {
it('should return current version', inject(function(version) {
expect(version).toEqual('0.0.1');
}));
});
});
Here's my karma.conf.js file:
// Karma configuration
// Generated on Mon Apr 15 2013 20:56:23 GMT-0400 (Eastern Daylight Time)
// base path, that will be used to resolve files and exclude
basePath = '';
// list of files / patterns to load in the browser
files = [
JASMINE,
JASMINE_ADAPTER,
'Vendor/angular-1.0.6/angular.js',
'Vendor/angular-1.0.6/angular-*.js',
'Vendor/json2/json2.js',
'Vendor/jquery/jquery-1.8.2.js',
'Vendor/amplify/amplify.js',
'Scripts/main.js',
'Test/unit/*.js'
];
// list of files to exclude
exclude = [
];
// test results reporter to use
// possible values: 'dots', 'progress', 'junit'
reporters = ['progress'];
// web server port
port = 9876;
// cli runner port
runnerPort = 9100;
// enable / disable colors in the output (reporters and logs)
colors = true;
// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel = LOG_WARN;
// enable / disable watching file and executing tests whenever any file changes
autoWatch = false;
// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers = ['Chrome'];
junitReporter = {
outputFile: 'Test/out/unit.xml',
suite: 'unit'
};
// If browser does not capture in given timeout [ms], kill it
captureTimeout = 60000;
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun = false;
For any AngularJS development company it is a must to work with unit testing on any project, regardless of whether you choose to use a TDD (test-driven development) approach or not, using it will have a lot of advantages.
Comparing test execution time, I found that Jest runs unit tests at 2x to 3x the speed of Karma. This can be drastic as your project becomes larger and the amount of test cases skyrocket.
Karma is a JavaScript test runner. It helps run the testing of the frontend in a real browser, running the test against the production build in a real browser and can help find discrepancies across different browsers. Jest is a must consideration for React users.
I just had the same issue and I found that I had to set autoWatch = true
before Karma would run the tests automatically.
Alternatively you can use exclude section in your karma.conf.js
exclude = [
'Vendor/angular-1.0.6/angular-scenario.js'
];
My last answer was wrong (moving the JASMINE and JASMINE_ADAPTER lines below the angular.js lines). It fixed this particular problem, but created other issues. Instead, what I did to fix it was to specify only the angular-mocks file, instead of angular-*, like so:
JASMINE,
JASMINE_ADAPTER,
'Vendor/angular-1.0.6/angular.js',
'Vendor/angular-1.0.6/angular-mocks.js',
'Vendor/json2/json2.js',
'Vendor/jquery/jquery-1.8.2.js',
'Vendor/amplify/amplify.js',
'Scripts/main.js',
'Test/unit/*.js'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With