1

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

        });

    })
})

結果のボディをテストしたいのですが、常にタイムアウトで実行されます。エラーが発生した場合は、エラーをスローできます。それで問題ありません。しかし、エラーが発生しない場合は、ドキュメントに記載されているような何も返さないとタイムアウトになります。

カスタム アサーション関数を渡します。チェックする応答オブジェクトが与えられます。応答が OK の場合、最も一般的には何も返さないことで、false を返す必要があります。チェックが失敗した場合は、エラーをスローするか、エラーになる文字列などの真の値を返します

例 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を使用しています

4

1 に答える 1