SO question
Jasmine + Angular
HTML
<script src="http://jasmine.github.io/2.0/lib/jasmine.js"></script>
<script src="http://jasmine.github.io/2.0/lib/jasmine-html.js"></script>
<script src="http://jasmine.github.io/2.0/lib/boot.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/2.0/lib/jasmine.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-mocks.js"></script>
JavaScript
// Source
angular.module('customProvider', [])
.provider('cprovider', [
'$windowProvider', function ($windowProvider) {
var $window = $windowProvider.$get();
var platform = function () {
// some code there use $window
// $window.location.reload();
return 'xxx';
};
this.platform = platform;
this.$get = function () {
return {
platform: platform
};
};
}]);
// Test
describe('cprovider', function () {
var cprovider, $window;
beforeEach(function () {
angular.mock.module('customProvider');
inject(function (_$window_, _cprovider_) {
cprovider = _cprovider_;
$window = _$window_;
spyOn($window.location, 'reload');
});
});
it('should something', function () {
// Arrange and Act in beforeEach.
// Assert. WON'T WORK
expect(cprovider.platform()).toBe('xxx');
expect($window.location.reload).toHaveBeenCalled();
});
});