Karma Jasmine错误:意外请求:GET但我正在进行POST

时间:2016-10-04 22:34:14

标签: jasmine karma-jasmine

我现在正在努力工作几个小时,不能只是弄清楚我的代码是什么问题 我的服务:

(function(){
  'use strict';

  angular
    .module('app')
    .factory('register', register);

    register.$inject = ['$http'];

    function register($http){
      var service = {
          post: post
      };

      return service;
      /////////////////////

      function post(data){
        return $http.post('/user/register', data)
            .then(registerSuccess)
            .catch(registerError);

            function registerSuccess(response){
              return response;
            }

            function registerError(error){
              return error;
            }
      }
    }

})();

和spec文件

    describe('Register service', function(){

  beforeEach(module('app'));

  var service;

  beforeEach(inject(function($http, $httpBackend, _register_) {
    http = $http;
    httpBackend = $httpBackend;
    service = _register_;
  }));

    it('check if register service exist', function(){
      expect(service).toBeDefined();
      expect(service.post()).toBeDefined();
    });

    it('rrrr', function(){
      httpBackend.expectPOST('/user/register', {u: 'xyz', password: 'pass' })
          .respond(200, {'status': 'success'});

      service.post({u: 'xyz', password: 'pass' })
          .then(function(data){
              expect(data.status).toBe(200);
          });
      httpBackend.flush();
    });

});

如果有人可以帮我理解为什么会出现这个错误

Error: Unexpected request: GET src/app/user/user.html

谢谢...

2 个答案:

答案 0 :(得分:1)

应用程序正在使用XHR请求获取路由/组件/指令的模板。解决此问题的最佳方法是使用$templateCache

您可以将this preprocessor与业力结合使用,将模板放入缓存中。

有关详细信息,请参阅this answer

答案 1 :(得分:0)

最简单的解决方案是使用 RegExp('。*。html')

//setup backend so all .html requests get an 200 response
httpBackend
        .whenGET(new RegExp('.*.html'))
        .respond(function(){ return [200, 'XXX', {}] });

//setup spec specific behavior
httpBackend
        .expectPOST('/user/register', {u: 'xyz', password: 'pass' })

说明:
这样可以确保所有.html GET请求都以200状态响应进行回答。
这也会使您的“意外请求”错误消失。

希望它有所帮助。