1

ich etwas in meiner Syntax hier fehlt bin aber nicht sicher, was:Erste async/warten mit Superagent arbeiten

Ich versuche, dies zu nock. Aber ich bekomme expected undefined to equal 'pXVCJ9.eyJpYXQ'

test.js

describe('User API',() => { 
    let email, password, requestBody 

    beforeEach(() => { 
     email = '[email protected]' 
     password = 'password' 
     requestBody = { 
     session: '05833a20-4035', 
     token: 'pXVCJ9.eyJpYXQ' } 

     nock('https://someurl/') 
     .get('users/sessions') 
     .reply(200, requestBody) 
    }) 

    it('returns user session for login', async() => { 
     const data = await UserApi.login(email, password) 

     expect(data.token).to.equal(requestBody.token) 
     expect(data.session).to.equal(requestBody.session) 
    }) 
}) 

UserApi.js

import request from 'superagent' 

export const endpoint = 'https://someurl/' 

const login = (email, password) => async() => { 
    try { 
    return await request 
     .get(`${endpoint}/users/sessions`) 
     .send({ email: email, password: password }) 
     .set('Accept', 'application/json') 
    } catch (err) { 
     //todo: implement this 
    } 
} 

export default { login } 

Antwort

4

Es gibt ein paar Probleme:

const login = (email, password) => async() => { ... } 

Dies macht login eine Funktion, die eine asynchrone Funktion zurückgibt. Es sollte eine Asynchron-Funktion selbst, so sein:

const login = async (email, password) => { ... } 

nächste in Ihrem nock Setup, sind Sie nicht den Weg mit einem / prefixing, so nock in der Lage, die Anforderung nicht entsprechen. Einfache Lösung:

nock('https://someurl') 
    .get('/users/sessions') 
    .reply(...); 

Schließlich superagent kehrt die Antwortdaten als response.body oder in Ihrem Fall, data.body. Also sollten die Behauptungen so aussehen:

expect(data.body.token).to.equal(requestBody.token) 
expect(data.body.session).to.equal(requestBody.session) 
+0

Danke Robert Ich habe die erste Ausgabe nicht besonders realisiert – PositiveGuy

Verwandte Themen