0

我有以下需要测试的请求:

curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"content":{"value":"18.5", "date": "20120413"}}' 'http://SERVER:PORT/marks'

我正在使用 expressjs 和 mocha。我没有找到在 mocha 的请求中添加一些标头并指定一些 json 参数的方法:

it('Checks creation of a new mark', function(done){
   request.post('http://SERVER:PORT/marks', function(err, response, body){
   // Some headers and parameters should be set in the request
   response.statusCode.should.equal(201);
  done();
});

});

下面的测试(GET 请求)运行良好:

it('Checks existence of marks for user dummyuser', function(done){
  request.get('http://SERVER:PORT/user/dummyuser/marks', function(err, response, body){
    response.statusCode.should.equal(200);
    done();
  });
});

更新

下面的工作就像一个魅力:(我虽然要求摩卡创造了某种变量)。

 request(
  { method: 'POST'
  , uri: 'http://SERVER:PORT/marks'
  , headers: { 'content-type': 'application/json' , 'accept': 'application/json' }
  , json: { "content":{"value":"18,5", "date": "2012-04-13"} }
  }
, function(err, response, body){
  response.statusCode.should.equal(201);
  done();
});
4

1 回答 1

2

看看文档。关于如何使用自定义标题发布帖子有一个很好的解释。一种对我有用的方法可能是以下。

var options = {
  host: 'localhost',
  port: 80,
  path: '/echo/200',
  method: 'POST',
  headers: {
    "X-Terminal-Id" : terminalId
  }
};
var data = ""
var req = https.request(options, function(res) {
  res.on('data', function(d) {
    data += d;
  });
  res.on('end', function(err){
    //Check that data is as expected
    done(null, data)
  })
});
req.end();

req.on('error', function(err) {}
  done(err) 
});
于 2013-03-25T09:49:02.780 回答