var app = angular.module('plunker', []);
console.log('loaded app.js');
app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  $scope.booleanSpinner = {val: false};
});
describe('Testing a Hello World controller', function() {
  var $scope = null;
  var ctrl = null;

  //you need to indicate your module in a test
  beforeEach(module('plunker'));

  beforeEach(inject(function($rootScope, $controller) {
    $scope = $rootScope.$new();

    ctrl = $controller('MainCtrl', {
      $scope: $scope
    });
  }));

  it('should say hallo to the World', function() {
    expect($scope.name).toEqual('World');
  });
});
<!DOCTYPE html>
<html ng-app="plunker">

<head>
  <meta charset="utf-8" />
  <title>AngularJS test</title>
  <link data-require="jasmine" data-semver="2.0.0" rel="stylesheet" href="//cdn.jsdelivr.net/jasmine/2.0.0/jasmine.css" />
  <script data-require="json2" data-semver="0.0.2012100-8" src="//cdnjs.cloudflare.com/ajax/libs/json2/20121008/json2.js"></script>
  <script data-require="jasmine" data-semver="2.0.0" src="//cdn.jsdelivr.net/jasmine/2.0.0/jasmine.js"></script>
  <script data-require="jasmine" data-semver="2.0.0" src="//cdn.jsdelivr.net/jasmine/2.0.0/jasmine-html.js"></script>
  <script data-require="jasmine@*" data-semver="2.0.0" src="//cdn.jsdelivr.net/jasmine/2.0.0/boot.js"></script>
  <script data-require="angular.js" data-semver="1.3.6" src="https://code.angularjs.org/1.3.6/angular.js"></script>
  <script data-require="angular-mocks" data-semver="1.3.5" src="https://code.angularjs.org/1.3.5/angular-mocks.js"></script>
  <link rel="stylesheet" href="style.css" />
  <script src="app.js"></script>
  <script src="appSpec.js"></script>
  <script src="jasmineBootstrap.js"></script>
  <!-- bootstraps Jasmine -->
</head>

<body>
  <h1 ng-init="booleanSpinner= {val: false}" ng-show="booleanSpinner.val">Hello</h1>
  <div mydirective booleanSpinner="booleanSpinner"></div>


  <script>
    myapp = angular.module('plunker', []);
    

    function mydirective() {
      'use strict';

      return {
        scope: {
          booleanSpinner: '='
        },
        restrict: 'A',
        template: 'test <img src="https://www.priceline.com/m/drive/images/ajax-loader-bar.gif" alt="loading..." class="ajax-loader"/>',
        link: function(scope, element) {
          console.log(scope.booleanSpinner);
          //scope.booleanSpinner.val = false;
        }

      };
    }
    
    myapp.directive("mydirective", mydirective);
  </script>
</body>

</html>
(function() {
  var jasmineEnv = jasmine.getEnv();
  jasmineEnv.updateInterval = 250;

  /**
   Create the `HTMLReporter`, which Jasmine calls to provide results of each spec and each suite. The Reporter is responsible for presenting results to the user.
   */
  var htmlReporter = new jasmine.HtmlReporter();
  jasmineEnv.addReporter(htmlReporter);

  /**
   Delegate filtering of specs to the reporter. Allows for clicking on single suites or specs in the results to only run a subset of the suite.
   */
  jasmineEnv.specFilter = function(spec) {
    return htmlReporter.specFilter(spec);
  };

  /**
   Run all of the tests when the page finishes loading - and make sure to run any previous `onload` handler

   ### Test Results

   Scroll down to see the results of all of these specs.
   */
  var currentWindowOnload = window.onload;
  window.onload = function() {
    if (currentWindowOnload) {
      currentWindowOnload();
    }

    //document.querySelector('.version').innerHTML = jasmineEnv.versionString();
    execJasmine();
  };

  function execJasmine() {
    jasmineEnv.execute();
  }
})();
/* restore "body" styling that were changes by "jasmine.css"... */
body { background-color: white; padding: 0; margin: 8px; }
/* ... but remain the "jasmine.css" styling for the Jasmine reporting */
.jasmine_reporter { background-color: #eeeeee; padding: 0; margin: 0; }