Reputation: 341
I do not know why, when I try to debug a karma test with the JavaScript console in any browser, the code is obfuscated.
Example:
this is one of my test:
it("Test KO: authorization service is not configured",function(){
try {
debugger;
var authService = new AuthResource.authService();
var result = null;
var error = false;
var defer = $q.defer();
var promise = defer.promise;
promise.then(function(data){
result = data;
},function(data){
error=true;
});
expect(authService.isResourceAllowed().then).toBeDefined();
authService.isResourceAllowed().then(function(data){
defer.reject();
},function(data){
defer.resolve(data);
});
$rootScope.$digest();
expect(error).toBe(false);
expect(result.message).toBe(thinErrors.AuthResource.SERVICE_NOT_READY);
} catch (err){
expect(false).toBe(true);
}
});
And this is the code that the browser show me:
__cov_WMdMXGMJh6AhQw9bCxIddQ = __cov_WMdMXGMJh6AhQw9bCxIddQ['./thin/test/unit
/authResourceTest.js'];
__cov_WMdMXGMJh6AhQw9bCxIddQ.s['1']++;describe('Test for the authorization
service',function()
{__cov_WMdMXGMJh6AhQw9bCxIddQ.f['1']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['2']++;var
$httpBackend,AuthResource,$q,$rootScope,thinErrors;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['3']++;be foreEach(module('thinModule'));__cov_WMdMXGMJh6AhQw9bCxIddQ.s['4']++;beforeEach(inject(function(_$httpBackend_,_AuthResource_,_$q_,_$rootScope_,_thinErrors_){__cov_WMdMXGMJh6AhQw9bCxIddQ.f['2']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['5']++;$httpBackend=_$httpBackend_;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['6']++;AuthResource=_AuthResource_;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['7']++;$q=_$q_;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['8']++;$rootScope=_$rootScope_;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['9']++;thinErrors=_thinErrors_;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['10']++;$httpBackend.when('POST','/test1').respond(function(method,url,data,headers){__cov_WMdMXGMJh6AhQw9bCxIddQ.f['3']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['11']++;data=JSON.parse(data);__cov_WMdMXGMJh6AhQw9bCxIddQ.s['12']++;var error=false;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['13']++;var response=null;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['14']++;if(data.resource!='test1'){__cov_WMdMXGMJh6AhQw9bCxIddQ.b['1'][0]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['15']++;error=true;}else{__cov_WMdMXGMJh6AhQw9bCxIddQ.b['1'][1]++;}__cov_WMdMXGMJh6AhQw9bCxIddQ.s['16']++;if((__cov_WMdMXGMJh6AhQw9bCxIddQ.b['3'][0]++,!error)&&(__cov_WMdMXGMJh6AhQw9bCxIddQ.b['3'][1]++,data.typeResource!='test2')){__cov_WMdMXGMJh6AhQw9bCxIddQ.b['2'][0]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['17']++;error=true;}else{__cov_WMdMXGMJh6AhQw9bCxIddQ.b['2'][1]++;}__cov_WMdMXGMJh6AhQw9bCxIddQ.s['18']++;if((__cov_WMdMXGMJh6AhQw9bCxIddQ.b['5'][0]++,error)&&(__cov_WMdMXGMJh6AhQw9bCxIddQ.b['5'][1]++,data.attributes.result=='error')){__cov_WMdMXGMJh6AhQw9bCxIddQ.b['4'][0]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['19']++;response=[200,{'success':'Ok'},{}];}else{__cov_WMdMXGMJh6AhQw9bCxIddQ.b['4'][1]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['20']++;if((__cov_WMdMXGMJh6AhQw9bCxIddQ.b['7'][0]++,error)&&(__cov_WMdMXGMJh6AhQw9bCxIddQ.b['7'][1]++,data.attributes.result=='OK')){__cov_WMdMXGMJh6AhQw9bCxIddQ.b['6'][0]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['21']++;response=[404,{},{}];}else{__cov_WMdMXGMJh6AhQw9bCxIddQ.b['6'][1]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['22']++;if((__cov_WMdMXGMJh6AhQw9bCxIddQ.b['9'][0]++,!error)&&(__cov_WMdMXGMJh6AhQw9bCxIddQ.b['9'][1]++,data.attributes.result=='error')){__cov_WMdMXGMJh6AhQw9bCxIddQ.b['8'][0]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['23']++;response=[404,{},{}];}else{__cov_WMdMXGMJh6AhQw9bCxIddQ.b['8'][1]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['24']++;if((__cov_WMdMXGMJh6AhQw9bCxIddQ.b['11'][0]++,!error)&&(__cov_WMdMXGMJh6AhQw9bCxIddQ.b['11'][1]++,data.attributes.result=='OK')){__cov_WMdMXGMJh6AhQw9bCxIddQ.b['10'][0]++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['25']++;response=[200,{'success':'Ok'},{}];}else{__cov_WMdMXGMJh6AhQw9bCxIddQ.b['10'][1]++;}}}}__cov_WMdMXGMJh6AhQw9bCxIddQ.s['26']++;return response;});}));__cov_WMdMXGMJh6AhQw9bCxIddQ.s['27']++;it('Test KO: authorization service is not configured',function(){__cov_WMdMXGMJh6AhQw9bCxIddQ.f['4']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['28']++;try{__cov_WMdMXGMJh6AhQw9bCxIddQ.s['29']++;debugger;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['30']++;var authService=new AuthResource.authService();__cov_WMdMXGMJh6AhQw9bCxIddQ.s['31']++;var result=null;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['32']++;var error=false;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['33']++;var defer=$q.defer();__cov_WMdMXGMJh6AhQw9bCxIddQ.s['34']++;var promise=defer.promise;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['35']++;promise.then(function(data){__cov_WMdMXGMJh6AhQw9bCxIddQ.f['5']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['36']++;result=data;},function(data){__cov_WMdMXGMJh6AhQw9bCxIddQ.f['6']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['37']++;error=true;});__cov_WMdMXGMJh6AhQw9bCxIddQ.s['38']++;expect(authService.isResourceAllowed().then).toBeDefined();__cov_WMdMXGMJh6AhQw9bCxIddQ.s['39']++;authService.isResourceAllowed().then(function(data){__cov_WMdMXGMJh6AhQw9bCxIddQ.f['7']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['40']++;defer.reject();},function(data){__cov_WMdMXGMJh6AhQw9bCxIddQ.f['8']++;__cov_WMdMXGMJh6AhQw9bCxIddQ.s['41']++;defer.resolve(data);});__cov_WMdMXGMJh6AhQw9bCxIddQ.s['42']++;$rootScope.$digest();__cov_WMdMXGMJh6AhQw9bCxIddQ.s['43']++;expect(error).toBe(false);__cov_WMdMXGMJh6AhQw9bCxIddQ.s['44']++;expect(result.message).toBe(thinErrors.AuthResource.SERVICE_NOT_READY);}catch(err){__cov_WMdMXGMJh6AhQw9bCxIddQ.s['45']++;expect(false).toBe(true);}});});
Does any of you know why this is happend?
This is my karma config file:
module.exports = function(config){
config.set({
basePath : '../../',
reporters: ['junit','coverage'],
preprocessors : {
'thin/**/*.js': 'coverage'
},
files : [
'thin/lib/angular/angular.min.js',
'thin/lib/angular/angular-*.js',
'thin/lib/angular-translate/angular-translate.min.js',
'thin/lib/angular-translate/angular-translate-loader-partial.min.js',
'thin/test/lib/angular/angular-mocks.js',
'thin/lib/jquery/*.js',
'thin/lib/bootstrap/*.js',
'thin/lib/log4js/*.js',
'thin/lib/stacktrace/*.js',
'thin/test/resources/thinConfiguration.js',
'thin/test/resources/configuration.js',
'thin/test/resources/thinStart.js',
'thin/thinServices/*.js',
'thin/thinFilters/*.js',
'thin/filters/*.js',
'thin/thinDirectives/*.js',
'thin/services/*.js',
'thin/test/unit/*.js'
],
browserNoActivityTimeout: 300000,
autoWatch : false,
frameworks: ['jasmine'],
browsers : ['Chrome'],
singleRun : true,
logLevel: config.LOG_DEBUG,
plugins : [
'karma-coverage',
'karma-junit-reporter',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-phantomjs-launcher',
'karma-jasmine'
],
junitReporter : {
outputFile: 'thin/test/out/TEST-karma.xml',
suite: 'unit'
},
coverageReporter : {
type: 'lcovonly',
dir: 'thin/test/coverage/'
}
});};
Thank you for your time
UPDATED:
This is funny. If I copy my test folder in a upper directory, the code is clear as the light of the day. I mean, my tests was in the folder workspace/project/Webcontent/thin/test and, now, they are in workspace/project/WebContent/test. This is the solution. However, I still not knowing why, if my test are in one folder level more under, the code appears obfuscated
Any idea?
Upvotes: 0
Views: 452
Reputation: 9989
The coverage plugin preprocess your source code and produces a version of it suitable to track the coverage - that's why all those lines have counters (random-variable++
) everywhere in it.
Moving the files in another directory not mapped by the coverage plugin leaves your source code as is.
If you want to debug your source code while testing disable the coverage plugin and reactivate it when the debugging is done - (perhaps using a karma-wrapper?)
Upvotes: 1