在chai请求中翻译API

时间:2017-09-29 14:24:24

标签: node.js curl chai

我打电话给API:

  

curl -X PATCH --header' Content-Type:application / json' --header'授权:Bearer 863e2ddf246300f6c62ea9023d068805' -d' 1' ' http://asdasd.com/api/loyalty/v1/Accounts/6064361727001553966/Cards'

我想编写一个chai请求来测试我的API。 我写了这个:

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

但是通过这种方式,我通过了" 1"值类似于cardStatus参数的值。在API调用中我只有这个

  

-d' 1'

如何在chai请求中重现这一点? 有一种方法可以在没有参数键的请求体中传递此参数吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 我把它添加到我的.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();
  }
});

并使用req.text从请求中获取字符串。

chai请求现在写成:

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

我可以在命令行中调用我的api:

  

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