Mocking modal
Answer to SO question
HTML
<script src="http://pivotal.github.io/jasmine/lib/jasmine-1.3.1/jasmine.js"></script>
<script src="http://pivotal.github.io/jasmine/lib/jasmine-1.3.1/jasmine-html.js"></script>
<link rel="stylesheet" href="http://pivotal.github.io/jasmine/lib/jasmine-1.3.1/jasmine.css">
<script src="http://code.angularjs.org/1.2.0/angular.js"></script>
<script src="http://code.angularjs.org/1.2.0/angular-mocks.js"></script>
<script src="http://code.angularjs.org/1.2.0/angular-route.js"></script>
<script src="http://code.angularjs.org/1.2.0/angular-animate.js"></script>
JavaScript
//--- CODE --------------------------
angular.module('myModule', []); //module depends on AngularStrap
angular.module('myModule').service('myModuleService', ['$modal', function ($modal) {
this.foo = function () {
$modal.show();
}
}]); //depends on $modal service from AngularStrap
// --- SPECS -------------------------
describe('mock modal', function () {
var modalMock = jasmine.createSpyObj('modal', ['show']),
service;
beforeEach(function () {
angular.mock.module('myModule');
angular.mock.module(function ($provide) {
$provide.value('$modal', modalMock);
});
angular.mock.inject(function (myModuleService) {
// Initialize the service under test instance
service = myModuleService;
});
});
it('mocks modal', function () {
service.foo();
expect(modalMock.show).toHaveBeenCalled();
});
});
// --- Runner -------------------------
(function () {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function (spec) {
return htmlReporter.specFilter(spec);
};
var currentWindowOnload = window.onload;
window.onload = function () {
if (currentWindowOnload) {
currentWindowOnload();
}
execJasmine();
};
function execJasmine() {
jasmineEnv.execute();
}
})();