使用node.js测试API如何处理无效的JSON语法请求主体

左撇子

我想测试REST API如何处理具有无效JSON语法(例如,缺少逗号)的正文的POST请求。我正在使用node.js编写API测试。我正在使用frisby,但我也尝试过超级测试没运气。使用先前的工具,您可以将请求主体作为JavaScript对象传递,因此这是行不通的。我也尝试将无效的JSON作为字符串传递而没有任何运气,因为字符串也是有效的JSON(下面的示例)。有任何想法吗?

frisby.create('Ensure response has right status')
    .post('http://example.com/api/books', '{"invalid"}', {json: true})
    .expectStatus(400)
    .toss();
左撇子

使用supertest和mocha包,您可以通过发布无效的JSON来测试端点,如下所示:

var request = require('supertest');

describe('Adding new book', function(){
  it('with invalid json returns a 400', function(done){
    request('http://example.com').post('/api/books')
      .send('{"invalid"}')
      .type('json')
      .expect('Content-Type', /json/)
      .expect(400)
      .end(function(err, res) {
          console.log(res.error);
          done();
      });
  });
});

这里重要的是type(json)这会将请求的Content-Type设置为application / json。如果没有它,supertest / superagent将默认以application / x-www-form-urlencoded发送字符串。另外,无效的JSON是作为字符串而不是作为JavaScript对象提供的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章