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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergessen Sie gefälschte backend reagieren, wenn
POST
Anfragehttp://localhost:8080/services/access
. Auf der test, den Sie nur zum testen der erwartetenPOST
Anfrage, ob es gemacht wurde oder mit der richtigenparams
. Nur in gefälschten Antwort und es funktioniert perfektLink fiddle für Ihre Präferenz.
InformationsquelleAutor themyth92