2015-02-09 80 views
1

我试图用ngMockE2E模拟后端用于开发目的,但有这个错误“意外的请求:GET views/home.html”。另外我使用的路线services.Thanks UI路由器意外的请求:GET

的index.html

<!doctype html> 
<html lang="en" ng-app="userApp"> 
<head> 
<meta charset="utf-8"> 
<title> Angular App</title> 
<link rel="stylesheet" type="text/css" href="css/bootstrap.css"> 
<link rel="stylesheet" type="text/css" href="css/all.css"> 
<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/angular.min.js"></script> 
<script type="text/javascript" src="js/angular-cookies.js"></script> 
<script type="text/javascript" src="js/ui-router.js"></script> 
<script type="text/javascript" src="js/angular-resource.js"></script> 
<script type="text/javascript" src="js/angular-mocks.js"></script> 
<script type="text/javascript" src="js/app.js"></script> 
<script type="text/javascript" src="js/controllers.js"></script> 
<script type="text/javascript" src="js/services.js"></script> 
</head> 
<body> 
<div class="container"> 
    <div class="row"> 
     <header id="header"> 
      <div class="logo col-sm-12 col-lg-4"> 
       <h1>logo</h1> 
       <ul class="nav nav-pills pull-right"> 
        <li><a ui-sref="home" class="btn btn-success" ui-sref-active="btn-warning">Home</a></li> 
        <li><a ui-sref="login" class="btn btn-success" ui-sref-active="btn-warning">Login</a></li> 
        <li><a ui-sref="register" class="btn btn-success" ui-sref-active="btn-warning">Register</a></li> 
       </ul> 
      </div> 
      <div class="text-area col-sm-12 col-lg-8"> 
       <h2>Test</h2> 
      </div> 
     </header> 
     <section id="main"> 
      <div class="container"> 
       <div class="row"> 
        <div ui-view></div> 
       </div> 
      </div> 
     </section> 
     <footer id="footer"> 
      <div class="container"> 
       <div class="row"> 
        <p class="text-center">Copyright </p> 
       </div> 
      </div> 
     </footer> 
    </div> 
</div> 
</body> 
</html> 

app.js

(function(ng){ 
var userApp = ng.module("userApp", ["ui.router", "ngMockE2E", "ngResource", "ngCookies", "mainCtrl"]); 
userApp.config(["$stateProvider", "$urlRouterProvider", "$provide", function($stateProvider, $urlRouterProvider, $provide){ 
    $urlRouterProvider.otherwise("/"); 
    $provide.decorator("$httpBackend", ng.mock.e2e.$httpBackendDecorator); 
    $stateProvider 
     .state("login", { 
      url   : "/login", 
      templateUrl : "views/login.html", 
      controller : "loginCtrl" 
     }) 
     .state("register", { 
      url   : "/register", 
      templateUrl : "views/register.html", 
      controller : "registerCtrl" 
     }) 
     .state("home", { 
      url   : "/", 
      templateUrl : "views/home.html", 
      controller : "homeCtrl" 
     }) 
}]); 
userApp.run([ "$httpBackend", function($httpBackend){ 
    var users = [{ "id" : "1", "username" : "[email protected]", "password" : "user1" }]; 
    $httpBackend.expect("GET", "/login"); 
    $httpBackend.when("GET", "/login").respond(users[0]); 
}]); 
})(angular); 
+0

我想如果你改变'url:“/”,'到'url:“/ home”,'或者som它不会发生。你有'$ urlRouterProvider.otherwise(“/”);'这会触发'home'状态,然后转向'views/home.html'。这就是我认为无论如何发生:) – 2015-02-09 08:48:32

+0

更改'“views/home.html”'到'“/views/home.html”',在url之前添加'/' – 2015-02-10 05:04:41

回答

1

您需要直通添加到您的意见目录,所以$httpBackend服务将不会捕获请求:

userApp.run([ "$httpBackend", function($httpBackend){ 
    var users = [{ "id" : "1", "username" : "[email protected]", "password" : "user1" }]; 
    $httpBackend.expect("GET", "/login"); 
    $httpBackend.when("GET", "/login").respond(users[0]); 

    $httpBackend.whenGET(/^views\//).passThrough(); // ignore requests to the views directory 
}]);