This example seems to work flawlessly in practice... however it breaks unit testing with angular-mock so something is not mapping 1/1... any ideas?
$delegate.log = function(msg){
_log.apply(null,arguments)
//any logic for catching $log.log messages here
}
return $delegate
}
)
}
)
## app/controllers/ApplicationController.js
angular.module('app').controller
( 'ApplicationController'
, function
( $scope
, $log
) {
// this works normally
$log.log('testing logging')
}
)
## test/spec/controllers/main.js
describe('Application'
, function () {
beforeEach(module('app'))
describe('ApplicationController'
, function () {
it('should be available'
, inject(
function($rootScope, $controller){
var ctrl = $controller
( "ApplicationController"
, { $scope: $rootScope.$new() }
)
expect(ctrl).toBeDefined();
}
)
)
}
)
}
)
## testacular start --single-run
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.8 (Linux)]: Connected on socket id pQeU7945i4k148Z0K_lr
PhantomJS 1.8 (Linux) Application ApplicationController should be available FAILED
TypeError: 'undefined' is not an object (evaluating '$log.info.logs.push')
at /home/lrvick/testapp/app/lib/bower-angular-mocks-latest/angular-mocks.js:306
at /home/lrvick/testapp/app/js/logging.js:21
at /home/lrvick/testapp/app/js/controllers/ApplicationController.js:11
at invoke (/home/lrvick/testapp/app/lib/angular/index.js:2871)
at instantiate (/home/lrvick/testapp/app/lib/angular/index.js:2881)
at /home/lrvick/testapp/app/lib/angular/index.js:4770
at /home/lrvick/testapp/test/spec/controllers/main.js:12
at invoke (/home/lrvick/testapp/app/lib/angular/index.js:2871)
at workFn (/home/lrvick/testapp/app/lib/bower-angular-mocks-latest/angular-mocks.js:1783)