2017-02-27 7 views
0

Iモカ、Supertestとチャイを使用して次のテストを持っている:モカテストは、誤ったデータを渡す

const app = require('../server') 
const expect = require('chai').should() 
const request = require('supertest') 

describe('GET /webhook', function() { 
    context('a verify request from Facebook with a correct token', function() { 
    it('responds with 200 and displays the challenge query in the response body', function() { 
     request(app) 
     .get('/webhook?hub.mode=subscribe&hub.challenge=123456789&hub.verify_token=' + process.env.FB_VERIFY_TOKEN) 
     .expect(200) 
     .end(function (err, res) { 
      console.log(res.text) 
      res.should.have.property("text", "abc") 
      done() 
     }) 
    }) 
    }) 
}) 

あなたが見ることができるように、我々はの内容とプロパティ「テキスト」を持つように応答を期待しています'abc'しかし、私はテストを実行すると問題なく通過します。ここで

は、応答の短縮版です!

ClientRequest{ 
    res:IncomingMessage { 
     headers:{ 
     'x-powered-by':'Express', 
     'content-type':'text/html; charset=utf-8', 
     'content-length':'9', 
     etag:'W/"9-JfnnlDI7RTiF9RgfG2JNCw"', 
     date:'Mon, 27 Feb 2017 19:45:30 GMT', 
     connection:'close' 
     }, 
     rawHeaders:[ 
     'X-Powered-By', 
     'Express', 
     'Content-Type', 
     'text/html; charset=utf-8', 
     'Content-Length', 
     '9', 
     'ETag', 
     'W/"9-JfnnlDI7RTiF9RgfG2JNCw"', 
     'Date', 
     'Mon, 27 Feb 2017 19:45:30 GMT', 
     'Connection', 
     'close' 
     ], 
     upgrade:false, 
     url:'', 
     method:null, 
     statusCode:200, 
     statusMessage:'OK', 
     req:[ 
     Circular 
     ], 
     text:'123456789', 
    } 
} 

私は123456789 = ABCとして、失敗するテストを期待していますが、残念ながらこれはそうではありません。

誰にもアイデアはありますか?

+0

わからないが、それは 'res.should.haveように私には見えます:あなたのケースでは

あなたは、あなたはそれがコールバックをテストするために渡していないdoneコールバックを呼び出している間、それはする必要があります'' expect(res).to.have.property( 'text'、 'abc'); 'に変更する必要があることに注意してください。 =期待する( 'チャイ')。〜を期待する=期待する( 'チャイ'); ' –

答えて

2

非同期操作が行われるとすぐに、非同期操作が実行されるのを待つようにテストランナーに指示する必要があります。 mochaを使用すると、テストからの約束を返すか、またはdoneコールバックを使用するか、必要に応じて呼び出すことができます。この上

it('should bla bla', function (done) { 
    ... 
    // call done() 
}) 
+0

ああ私の言葉。私は明らかにあまりにも長くなってきた。それを見つけてくれてありがとう! – tombraider