我应该使用 jasmine 模拟一个 ajax 调用。
以下是我的代码片段。
var httpBackend;
var http;
beforeEach(inject(function ($injector) {
$httpBackend = $injector.get('$httpBackend');
scope = $injector.get('$rootScope').$new();
var $controller = $injector.get('$controller');
var MainCtrl = $controller('scanningClientsController',
{ $scope: scope });
}));
it("Verify Ajax Call", function () {
var test;
$httpBackend.expectGET(scope.requestUrl).respond([{}, {}, {}]);
scope.GetClients().then(function (response) {
test = response;
});
$httpBackend.flush();
expect(test.length).toBe(3);
我在控制器中的功能如下:
$scope.GetClients =
function () {
$http({
method: 'GET',
url: $scope.requestUrl,
}).success(function (response, status, headers, config) {
$scope.scanningClientsList = response.data;
}).error(function (data, status, headers, config) {
});
};
现在我得到一个错误
TypeError: 'undefined' is not an object (evaluating 'scope.GetClients().then')
尝试从这个http://chutzpah.codeplex.com/workitem/230修复
但这似乎无法解决问题。有任何想法吗?