2016-04-22 2 views
0

私はいくつかの要求をテストするために偽のサイオンサーバーをセットアップしようとしています。以下のコードでは、私のコールバック関数が呼び出されることはありません。 Error: timeout of 500ms exceeded. Ensure the done() callback is being called in this test.でテストエラーが発生するコールバック関数がすぐに呼び出されないのはなぜですか?私のsinonの偽のサーバが何も返さないのはなぜですか?

var request = require('request'); 
var sinon = require('sinon'); 

describe('Job gets data', function(){ 

    var server; 

    beforeEach(function(){ 
     server = sinon.fakeServer.create(); 
    }); 

    afterEach(function(){ 
     server.restore(); 
    }); 

    context('When there is a GET request to /something', function(){ 

     it('will throw an error if response format is invalid', sinon.test(function(done){ 

      server.respondWith('GET', '/something', [200, { "Content-Type": "application/json" }, '{invalid: "data"}']); 
      request.get('/something', function (err, response, body) { 
       console.log(response); 
       console.log(body); 
       done(); 
      }); 
     })); 

    }); 

答えて

1

すべてのリクエストを完了させるには、server.respondに電話する必要があります。 I found this Gist which gives an example.

これは関連するコードです。

server.respondWith("GET", "/something", 
        [200, { "Content-Type": "application/json" }, 
        '{ "stuff": "is", "awesome": "in here" }']); 

var callbacks = [sinon.spy(), sinon.spy()]; 

jQuery.ajax({ 
    url: "/something", 
    success: callbacks[0] 
}); 

jQuery.ajax({ 
    url: "/other", 
    success: callbacks[1] 
}); 

console.log(server.requests); // Logs all requests so far 
server.respond(); // Process all requests so far 
関連する問題