0
我在这方面花了太多时间。我有一个简单的角度应用程序,从远程服务器获取一些JSONP并将其显示在屏幕上。角单元测试 - httpBackend JSONP
我正在用Jasmine创建单元测试最困难。
这里是我的应用程序
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");
});
});
您能否提供更多信息? – bencripps 2014-11-05 01:44:32
@bencripps从[document](https://docs.angularjs.org/api/ngMock/service/$httpBackend):“模拟$ httpBackend有一个flush()方法,它允许测试显式地刷新挂起的请求。这保留了后端的异步api,同时允许测试同步执行。“ – 2014-11-05 02:19:30