supertest .expect(function(res){})如果测试正常则返回什么

时间:2014-05-11 16:05:44

标签: node.js gruntjs mocha supertest

如果用mocha和supertest进行测试:

describe('GET /v1/news/5339a146d46d35ebe953030a --test', function(){
it('respond with json', function(done){
    request(app)
        .get('/v1/news/5339a146d46d35ebe953030a')
        .set('Accept', 'application/*')
        .set('DEV-ROLE', 'test')
        .expect('Content-Type', /json/)
        .send(json)
        .expect(200)
        .expect(function(res) {
            //THIS FUNCTION RESULT IN A TIMEOUT IF NO ERROR IS THROWN
            if(!('item' in res.body)) throw  new Error("missing item key");
        })
        .end(function(err, res){
            if (err) return done(err);
            done()

        });

    })
})

我想测试生成的身体,但我总是在超时运行。 如果发生错误,我可以抛出一个错误,没关系。但是如果没有错误发生,如果我撤回文档中描述的内容,我会遇到超时:

  

传递自定义断言功能。它将被赋予响应对象   去检查。如果响应是正确的,它应该返回假,最常见   不归还任何东西。如果检查失败,则抛出错误或   返回一个像一个字符串的truthy值,它将变成一个错误

示例im docu:

  request(app)
    .get('/')
    .expect(hasPreviousAndNextKeys)
    .end(done);

  function hasPreviousAndNextKeys(res) {
    if (!('next' in res.body)) return "missing next key";
    if (!('prev' in res.body)) throw new Error("missing prev key");
  }

我使用版本0.12.1

1 个答案:

答案 0 :(得分:-2)

等待版本0.13.0解决了这个问题。现在它有效。