Ich habe eine Methode für mein Controller definiert, wieWie bekomme ich die Parameter von einem HTTP-Requests beim Unit-Test in angularjs?
$scope.submitForm = (username, password) =>{
$http({
method: 'post',
url: 'balabala',
params: {username, password}
}).success(res => { /* */ });
}
Meine Testspezifikt wie folgt aussehen:
descript('myController',() => {
beforeEach(module('myModule'));
let controller, httpBackend, http, scope;
beforeEach(inject(($controller, $httpBackend, $http, $scope) => {
scope = $scope.$new();
httpBackend = $httpBackend;
http = $http;
controller = $controller;
httpBackend.when('POST', '/login')
.respon({
result: 'ok'
});
}));
it('should POST login',() => {
httpBackend.expectPOST('/login');
const myController = controller('myController', {
$scope: scope,
$http: http
});
scope.submitForm();
httpBackend.flush();
});
});
Wie kann ich sicherstellen, dass username
und password
gebucht wurden?
// EDIT: Wie bewerte ich den Körper der POST-Anfrage?
const data = { foo: "1", bar: { x: "2" } };
httpBackend.expectPOST('http://example.com').respond((method, url, data, headers, params) => {
console.log(method, url, data, headers, params);
});
http({
url: 'http://example.com',
method: 'POST',
data
});
Der Ausgang ist:
'POST', 'http://example.com', 'foo = 1 & bar = 2', Object {Accept: ‚application/js auf, text/plain, /‘Content-Type: 'application/x-www-form-urlencoded; charset = u tf-8'}, undefined
Wissen Sie, wie man params und body erhält, wenn Sie httpBackend benutzen? – Zen
Eine Frage, wie bewerte ich den Körper der POST-Anfrage? Ich habe meine Frage bearbeitet .. – Zen
können Sie nicht direkt tun, müssen Sie einen Anruf haben. –