相关疑难解决方法(0)

UI路由器干扰$ httpbackend单元测试,角度js

这是一个具有提交功能的控制器:

$scope.submit = function(){   

 $http.post('/api/project', $scope.project)
      .success(function(data, status){
        $modalInstance.dismiss(true);
      })
      .error(function(data){
        console.log(data);
      })
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的考验

it('should make a post to /api/project on submit and close the modal on success', function() {
    scope.submit();

    $httpBackend.expectPOST('/api/project').respond(200, 'test');

    $httpBackend.flush();

    expect(modalInstance.dismiss).toHaveBeenCalledWith(true);
  });
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Error: Unexpected request: GET views/appBar.html
Run Code Online (Sandbox Code Playgroud)

views/appBar.html是我的templateUrl:

 .state('project', {
    url: '/',
    templateUrl:'views/appBar.html',
    controller: 'ProjectsCtrl'
  })
Run Code Online (Sandbox Code Playgroud)

所以不知何故,ui-router正在使我的$ httpBackend指向此而不是我的提交功能.在使用$ httpBackend的所有测试中,我遇到了同样的问题.

这有什么解决方案吗?

javascript angularjs angular-ui karma-runner angular-ui-router

44
推荐指数
2
解决办法
2万
查看次数