2017-09-29 3 views
0

J'ai cet appel à une API:Traduire une API dans une demande de chaï

boucle -X PATCH --header 'Content-Type: application/JSON' --header 'Autorisation: Bearer 863e2ddf246300f6c62ea9023d068805' - d '1' 'http://asdasd.com/api/loyalty/v1/Accounts/6064361727001553966/Cards'

et je veux écrire une requête chai pour tester mon API. J'ai écrit ceci:

describe('/PATCH Patch a card with a Status variable inactive test',() => { 


it('it should GET a sample error json response ', (done) => { 
    chai.request(app) 
    .patch('/loyalty/v1/cards/6064361727001553966') 
    .send({"cardStatus": "1" }) 
    .end((err, res) => { 
    res.should.have.status(200); 
    done(); 
}); 
}); 
}); 

mais de cette façon que je passe la valeur « 1 » comme valeur du paramètre cardStatus. Dans l'appel API Je ne ce

-d '1'

Comment puis-je reproduire ceci dans la demande de chai? Il existe un moyen de passer ce paramètre dans le corps de la requête sans clé de paramètre?

Répondre

0

J'ai trouvé une solution. Je ajouté à mon fichier .js:

app.use(function(req, res, next){ 
    if (req.is('text/*')) { 
    req.text = ''; 
    req.setEncoding('utf8'); 
    req.on('data', function(chunk){ req.text += chunk }); 
    req.on('end', next); 
    } else { 
    next(); 
    } 
}); 

et utilisé req.text pour obtenir la chaîne de la demande.

La demande de chai est écrit maintenant comme ceci:

describe('/PATCH Patch a card with a Status variable active test',() => { 
    it('it should GET a sample error json response ', (done) => { 
    chai.request(app) 
    .post('/loyalty/v1/cards/6064361727001553966') 
    .set('content-type', 'text/plain') 
    .send('1') 
    .end((err, res) => { 
    res.should.have.status(200); 
    done(); 
}); 
}); 
}); 

et je peux appeler mon api dans la ligne de commande comme ceci:

boucle -v -X POST --header « Contenu -Type: text/plain '-d' 1 ' ' https://asdasd.com/api/loyalty/v1/cards/6064361727001553966 '