Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Jasmine-测试异步函数或回调_Angularjs_Unit Testing_Jasmine - Fatal编程技术网

Angularjs Jasmine-测试异步函数或回调

Angularjs Jasmine-测试异步函数或回调,angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,我正在尝试使用Jasmine 2.4测试一个异步查询函数。我的角度服务有下一个代码: var moduleApp = angular.module('myApp', ['ngResource']); moduleApp.factory('UsersHandlingService', function ($resource) { return $resource("/api/users/:userId:userEmail", {userEmail : '@user_email'}, {

我正在尝试使用Jasmine 2.4测试一个异步查询函数。我的角度服务有下一个代码:

var moduleApp = angular.module('myApp', ['ngResource']);

moduleApp.factory('UsersHandlingService', function ($resource) {
  return $resource("/api/users/:userId:userEmail", {userEmail : '@user_email'}, {
    'query': {method: 'GET', isArray: false},
    'update': {method: 'PUT'}
  });
});
我将UsersHandlingService服务注入控制器UsersController中,然后调用其函数,如下所示:

 moduleApp.controller('UsersController', ['$scope', 'UsersHandlingService', function($scope, UsersHandlingService){

  $scope.varController="testControllerVar";

  $scope.getUsers = function() {
    $scope.varTest1="Test1";
    UsersHandlingService.query(function (data, getResponseHeaders) {
          $scope.users = data.Users;
          console.log(data);
          $scope.varTest2="Test2";
   }, function (errorHttpResponse) {
          console.log(errorHttpResponse);
          $scope.error=errorHttpResponse;  //Error HTTP response in JSON format

    });


  };

}]);
    describe('UserController', function() {

    beforeEach(module('myApp'));



    var $scope, controller;

    var myService;

    var $httpBackend;

    var getResponse = {

          "Error": false,

          "Message": "Success",

          "Users": [

            {"user_id": 45, "user_email": "John@mail.com"},

            {"user_id": 52, "user_email": "Paul@mail.com"}

            ]
        };
describe('testASYNC', function () {

        var controller;
        var scope;
        var routeParams;

        var mockUsersService = {

                query: function(success, error) {

                        return success({

                            "success": true,

                            "Message": "SuccessMock",

                            "data": getResponse
                        });
                    }
                 };


      beforeEach(inject(function($controller, $rootScope) {

                scope = $rootScope.$new();
                controller = $controller('UsersController', {
                        $scope: scope,
                        UsersHandlingService: mockUsersService

                });

      }));



           it('should be defined', function() {

                      expect(controller).toBeDefined();

             });



         it('should have a varTest1 variable inside getUsers function ', function() {

              expect(scope.varTest1).toBeDefined();

              expect(scope.varTest1).toEqual("Test1");

                });


         it('should have a varTest2 variable inside query function ', function() {

              expect(scope.varTest2).toBeDefined();

              expect(scope.varTest2).toEqual("Test2");

        });

         it('should have scope.users variable inside query function ', function() {


            expect(scope.users).toEqual(getResponse.Users);
        });


});
现在,我用来测试控制器和服务的代码如下所示:

 moduleApp.controller('UsersController', ['$scope', 'UsersHandlingService', function($scope, UsersHandlingService){

  $scope.varController="testControllerVar";

  $scope.getUsers = function() {
    $scope.varTest1="Test1";
    UsersHandlingService.query(function (data, getResponseHeaders) {
          $scope.users = data.Users;
          console.log(data);
          $scope.varTest2="Test2";
   }, function (errorHttpResponse) {
          console.log(errorHttpResponse);
          $scope.error=errorHttpResponse;  //Error HTTP response in JSON format

    });


  };

}]);
    describe('UserController', function() {

    beforeEach(module('myApp'));



    var $scope, controller;

    var myService;

    var $httpBackend;

    var getResponse = {

          "Error": false,

          "Message": "Success",

          "Users": [

            {"user_id": 45, "user_email": "John@mail.com"},

            {"user_id": 52, "user_email": "Paul@mail.com"}

            ]
        };
describe('testASYNC', function () {

        var controller;
        var scope;
        var routeParams;

        var mockUsersService = {

                query: function(success, error) {

                        return success({

                            "success": true,

                            "Message": "SuccessMock",

                            "data": getResponse
                        });
                    }
                 };


      beforeEach(inject(function($controller, $rootScope) {

                scope = $rootScope.$new();
                controller = $controller('UsersController', {
                        $scope: scope,
                        UsersHandlingService: mockUsersService

                });

      }));



           it('should be defined', function() {

                      expect(controller).toBeDefined();

             });



         it('should have a varTest1 variable inside getUsers function ', function() {

              expect(scope.varTest1).toBeDefined();

              expect(scope.varTest1).toEqual("Test1");

                });


         it('should have a varTest2 variable inside query function ', function() {

              expect(scope.varTest2).toBeDefined();

              expect(scope.varTest2).toEqual("Test2");

        });

         it('should have scope.users variable inside query function ', function() {


            expect(scope.users).toEqual(getResponse.Users);
        });


});
当我运行测试时,前三个测试通过,但最后一个测试失败,我得到以下错误:

Expected undefined to equal [ Object({ user_id: 45, user_email: 'John@mail.com'}),Object({ user_id: 52, user_email: 'Paul@mail.com'})]
我看到了一些使用done()函数的示例,但我不知道如何确切地使用它来测试这个异步函数。你能帮我解决这个错误吗

看。