2016-08-30 12 views
7

Jestem kompletnym nowicjuszem w świecie JS. Próbuję napisać przypadek testowy, który testuje działania użytkownika w witrynie. Używam modułu request-promise do testowania wywołań asyn. Nie mogłem znaleźć żadnej dokumentacji na temat wniosku o dotację. Jak uzyskać dostęp do kodu statusu odpowiedzi? Teraz drukuje niezdefiniowane. Ponadto, czy ktoś może potwierdzić, w jaki sposób wiemy, co obiecuje zwrócić, gdy się powiedzie, jest to jedna wartość, którą rozwiązuje lub wszystkie parametry zwracane przez funkcję asynchroniczną. Skąd wiemy, jakie parametry mają funkcjonować() w request.get(base_url).then(function(response, body).Dostęp do nagłówków w żądanie-obietnica uzyskać odpowiedź

var request = require("request-promise"); 
var promise = require("bluebird"); 
// 
var base_url = "https://mysignin.com/" 
// 
describe("My first test", function() { 
it("User is on the sign in page", function(done) { 
    request.get(base_url).then(function(response, body){ 
    // expect(response.statusCode).toBe('GET /200'); 
     console.log("respnse " + response.statusCode); 
     console.log("Body " + body); 
     done(); 
    }).catch(function(error) { 
     done("Oops somthing went wrong!!"); 
    }); 
}); 
}); 
+0

Jak widzę tutaj (https://www.npmjs.com/package/request-promise) najwyraźniej pierwszym i jedynym parametrem dla tego parametru funkcji jest treść żądania jako ciąg. – Masterakos

+1

A tutaj pokazuje, jak uzyskać pełną odpowiedź. https://www.npmjs.com/package/request-promise#get-the-full-response-instead-of-just-the-body – Masterakos

Odpowiedz

7
var request = require('request-promise'); 

request.get('someUrl').then(function(body) { 
    // body is html or json or whatever the server responds 
}); 

request({ 
    uri: 'someUrl', 
    method: 'GET', 
    resolveWithFullResponse: true 
}).then(function(response) { 
    // now you got the full response with codes etc... 
}); 
0

Tsalikidis odpowiedź jest poprawna. chodzi o:

Ponadto, może ktoś proszę potwierdzić, skąd mamy wiedzieć, co obietnica zwraca kiedy jest sukces, to jest pojedyncza wartość, że postanawia lub wszystkie parametry, że funkcja asynchronicznego zwraca

Obietnica (obietnica/zgodna z A +) zawsze zwraca jedną wartość. Oczywiście ta wartość może być obiektem głęboko zagnieżdżonym z mnóstwem informacji. Ale .then(function(response,body){ jest z natury błędne.

Biblioteka, która odsyła obietnicę, powinna dokumentować format zwracanego obiektu.

13

Domyślnie biblioteka obietnicy żądania zwraca tylko samą odpowiedź. Możesz jednak przekazać prostą funkcję transformacji w opcjach, która ma trzy parametry i pozwala zwrócić dodatkowe rzeczy.

Więc gdybym chciał nagłówki plus odpowiedź wrócił do mnie, ja po prostu to zrobić:

var request = require('request-promise'); 
var uri = 'http://domain.name/'; 

var _include_headers = function(body, response, resolveWithFullResponse) { 
    return {'headers': response.headers, 'data': body}; 
}; 

var options = { 
    method: 'GET', 
    uri: uri, 
    json: true, 
    transform: _include_headers, 
} 

return request(options) 
.then(function(response) { 
    console.log(response.headers); 
    console.log(response.data); 
}); 

nadzieję, że pomoże.

+2

To powinno być zaakceptowaną odpowiedzią – speckledcarp

+0

Po prostu zaoszczędziłeś mi dużo czasu ... –

Powiązane problemy