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