Я потратил слишком много времени на это. У меня есть простое угловое приложение, которое получает JSONP с удаленного сервера и отображает его на экране.
Мне труднее всего создать модульный тест для него с Жасмин.
Вот мое приложение
var pdApp = angular.module('pdApp', []);
pdApp.controller('pdController', function ($scope, $http) {
var jsonpUrl = "http://10.1.20.377/products/1/167?cb=JSON_CALLBACK";
$http.jsonp(jsonpUrl).success(function(data) {
$scope.pageContent = data.pageContent;
$scope.cartContent = data.cartContent;
$scope.content = data.productContent;
});
});
И вот мой модульный тест
describe('myTest', function () {
var MainCtrl, scope, httpBackend;
beforeEach(module('pdApp'));
module('pdApp', function($provide) {
$provide.value('DefaultContent', defaultJSON);
});
beforeEach(inject(function($controller, $rootScope, $httpBackend) {
httpBackend = $httpBackend;
scope = $rootScope.$new();
MainCtrl = $controller('pdController', {
$scope: scope
});
}));
it("Product name should be set", function(){
httpBackend.whenJSONP("/products/1/167").respond(
{
"name" : "Prod Name",
"desc" : "Long Description Here"
}
);
expect(scope.pageContent.name).toEqual("Prod Name");
});
});