访问函数内部的局部变量,并使用angularjs检查jasmine测试中的ng-click

时间:2014-07-09 04:20:57

标签: angularjs jasmine karma-jasmine

您好我有以下代码

myApp.controller('myctrl',function($scope,myservice){
  //where testClickEvent is ng-click from partials
 $scope.testClickEvent=function(args){      
   var setArg1=args[0];
   var params = {"myarg1":setArg1}      
  //rest call         
   myservice.testClickEvent(params).success(function(data){
      if(data.res==true)
      {
          $scope.somevariable="success";
      }

  }).error(function(error){    
      $scope.somevariable="failure";
    });
  }
});

我想使用

的茉莉花来测试它
  1. 测试ng-click事件发生在部分??
  2. 我如何测试$scope.somevariablesetArg1有适当的值

    这里我用过

    spyOn(scope,testClickEvent); 
    scope.testClickEvent(args);
    expect(scope.testClickEvent).toHaveBeenCalledWith(args);
    spyOn(myservice,testClickEvent); 
    myservice.testClickEvent(params);
    expect(myservice.testClickEvent).toHaveBeenCalledWith(params);
    
  3. 但是如何访问结果和异步回调结果????

    提前致谢!感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您需要使用$httpBackend

模拟通话

https://docs.angularjs.org/api/ngMock/service/ $ httpBackend

角度页面中的示例包含以下两行:

$httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'}); $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');

第一个模拟响应并响应指定的任何对象 第二个期望使用指定的对象调用服务器。

希望这有帮助。