In some of my directives, I\'m adding functions to the scope to handle logic specific for the directive. For example:
link: function(scope, element, attrs) {
it('should get called on a click', inject(function($rootScope, $compile) {
var scope = $rootScope.$new();
element = $compile('')(scope);
scope.$digest();
expect(scope.$$childHead.doIt()).toBeDefined();
}));
Using this $$childHead was the solution for me to the same problem, with this I can cover functions that weren't being called in my tests.