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

访问函数内部的局部变量,并使用angularjs在jasmine测试中检查ng click,angularjs,jasmine,karma-jasmine,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

你好,我有以下代码

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";
    });
  }
});
我想用茉莉花来测试它

  • 测试
    ng click
    事件发生在部分
  • 如何测试
    $scope.somevariable
    setArg1
    的值是否正确

    这里我用过

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


    提前谢谢!谢谢你的帮助

    您需要使用
    $httpBackend

    $httpBackend

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

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

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


    希望这有帮助。

    谢谢!但我已经在serviceSpec中为服务单独做了这件事。我承认,如果不执行$httpBackend,我将无法获得结果。但是否有任何工作可以解决,仅测试控制器中的异步调用和结果值,以及测试ng click事件的想法。