2016-10-28 4 views
8

Ich verwende Supertest zum Senden von Abfrage String-Parameter, wie kann ich das tun?Wie senden Abfrage String-Parameter mit Supertest?

Ich versuchte

var imsServer = supertest.agent("https://example.com"); 

imsServer.get("/") 
    .send({ 
    username: username, 
    password: password, 
    client_id: 'Test1', 
    scope: 'openid,TestID', 
    response_type: 'token', 
    redirect_uri: 'https://example.com/test.jsp' 
    }) 
    .expect(200) 
    .end(function (err, res) { 
    // HTTP status should be 200 
    expect(res.status).to.be.equal(200); 
    body = res.body; 
    userId = body.userId; 
    accessToken = body.access_token; 
    done(); 
    }); 

aber, dass die Parameter nicht username, password, client_id als Query-String an den Endpunkt senden. Gibt es eine Möglichkeit, Abfrage-String-Parameter mit Supertest zu senden?

Antwort

22

Obwohl supertest nicht so gut dokumentiert ist, können Sie einen Blick in die tests/supertest.js werfen.

Dort haben Sie eine test suite nur für die Abfrage Zeichenfolgen.

Etwas wie:

request(app) 
    .get('/') 
    .query({ val: 'Test1' }) 
    .expect(200, function(err, res) { 
    res.text.should.be.equal('Test1'); 
    done(); 
    }); 

Deshalb:

.query({ 
    key1: value1, 
    ... 
    keyN: valueN 
}) 

funktionieren sollte.

+0

wie albern, dass diese einfache Funktion nicht in der README erwähnt wird. Ich frage mich, ob ich etwas über Supertests falsch verstehe. – vinhboy

+3

@vinhboy Das liegt wahrscheinlich daran, dass der Supertest mit der Funktion expect() nur 'superagent' ist. Wenn Sie in die Dokumentation von Superagent https://visionmedia.github.io/superagent/ schauen, können Sie die mit Beispielen beschriebene Abfragefunktion sehen. –

Verwandte Themen