Fehler: Unerwartete Anfrage: POST Karma-Jasmin-eckig

dem eigentlichen Szenario ist, wie wenn ich versuche zu testen, meine angular js-controller und service zusammen, die erste nenne ich eine bekommen ajax-request und auf seinen Erfolg nenne ich eine Benutzer-service, die auch einen post ajax-request. Wenn ich den test bekam ich die folgende Fehlermeldung.

Fehler: Unerwartete Anfrage: POST http://localhost:8080/services/access
Keine weitere Anfrage erwartet
/home/test/WebstormProjects/test2/bower_components/angular-mocks/angular-mocks.js

Fand ich einige ähnliche Fragen, die bei stack overflow, aber es wird nicht passen zu meinem Szenario. Diese sind die folgenden Fragen, die ich gefunden habe.

Unerwartete Anfrage: BEKOMMEN Keine weitere Anfrage erwartet bei $httpBackend

Mocking $httpBackend - how to handle "Unerwartete Anfrage, Nicht mehr verlangen erwartet"?

AngularJS $httpBackend - "Nicht mehr verlangen expected" error

Hier ist mein code, die ich Tat und versuchen.

test.js

describe('Login controller',function(){

  beforeEach(module('app'));

  var httpBackend,ctrl, scope,userService;

  beforeEach(inject(function($controller, $rootScope,$httpBackend,$injector,_userService_) {

    scope = $rootScope.$new();
    httpBackend = $injector.get('$httpBackend');

    userService = _userService_;

    ctrl = $controller('LoginController', {
      $scope: scope
    });
  }));

  it('should set authentication true', function() {

    scope.authenticateUser();

    var username = 'test';
    var password = '123456';
    var requestToken = "";

    httpBackend.whenGET('http://localhost:8080/services/request').respond(200,{
      status : 0
    });

    httpBackend.expect('POST', 'http://localhost:8080/services/access').respond(200, {
      status:"success"
    });

    var returnedPromise = userService.authenticateUser(username,password,requestToken);

    httpBackend.flush();

    expect(scope.result).toEqual(0);

    httpBackend.verifyNoOutstandingExpectation();
    httpBackend.verifyNoOutstandingRequest();

  });
});

app.js

app.controller('LoginController', function LoginController($scope,$http,userService) {
  $scope.test="hello";
  $scope.authenticateUser = function(){
    var username = 'test';
    var password = '123456';
    var token = "";

    $http.get('http://localhost:8080/services/request').success(function(data) {
        $scope.result = data.status;
        userService.authenticateUser(username, password, "").then(function(response){});
    });
  };
});

userService.js

userService.authenticateUser = function(username, password,requestToken){

            var status = $http({
                method: 'POST',
                url: "http://localhost:8080/services/access",
                data: $.param({username:username,password:password,request_token:requestToken}),
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}

            }).success(function(data, status, headers, config) {
                return data;

            }).
              error(function(data, status, headers, config) {
                return null;
            });
            return status;
        };

        return userService;

Ich bin neu mit karma-Jasmin-Winkel-test und ich kämpfen mit dieser Art von Szenarien. Bitte geben Sie mir die richtige Führung zu beheben, diese Art von Tests situation. Jede Hilfe zu schätzen wissen. Wenn möglich bitte machen Sie mir einige gute demos zum testen einer Dienstleistung, die auf den Erfolg eines Dienstes. Vielen Dank im Voraus.

InformationsquelleAutor James | 2015-04-29

Schreibe einen Kommentar