2016-10-28 10 views
8

Używam supertest, aby wysłać parametry ciągu zapytania, jak to zrobić?Jak wysłać parametry ciągu zapytania za pomocą supertest?

Próbowałem

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(); 
    }); 

ale nie wysyłać parametry username, password, client_id jako ciąg kwerendy do punktu końcowego. Czy istnieje sposób wysyłania parametrów ciągu zapytania za pomocą supertest?

Odpowiedz

22

Chociaż supertest nie jest dobrze udokumentowany, można zajrzeć do tests/supertest.js.

Masz tylko test suite tylko dla ciągów kwerend.

Coś jak:

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

Dlatego:

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

powinno działać.

+0

jak śmiesznie, że ta prosta funkcja nie jest wymieniona w README. Sprawia, że ​​zastanawiam się, czy nie rozumiem czegoś o supertest. – vinhboy

+3

@vinhboy To prawdopodobnie dlatego, że supertest jest po prostu 'superagent' z dodaną funkcją expect(). Jeśli zajrzysz do dokumentacji superagenta https://visionmedia.github.io/superagent/, zobaczysz funkcję zapytania opisaną w przykładach. –

Powiązane problemy