2017-08-29 3 views
1

J'essaie de simuler HTTP fetch dans jsfiddle. Je ne suis pas sûr de ce que je fais de mal qui fait que le résultat ne soit pas égal au simulacre.Mock HTTP fetch dans sinon

Voici mon exemple de code: (Vous pouvez voir les journaux dans la console du navigateur.)

http://jsfiddle.net/maryam_saeidi/yredb06m/7/

async function getUser(userId) {  
     var user = await fetch("http://ui-developer-backend.herokuapp.com/api/users/" + userId); 
    return user.json(); 
} 

mocha.setup("bdd"); 
chai.should(); 
var assert = chai.assert, 
     expect = chai.expect; 

describe('getUser()',() => { 
    let server; 

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

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

    it('should return a user.', async() => { 
    const response = await getUser(1); 
    console.log("response:", response); 
    }); 

    it('should return a user object', async() => { 
    const userId = 10; 
    server.respondWith("GET", "http://ui-developer-backend.herokuapp.com/api/users/" + userId,[200, { "Content-Type": "application/json" }, 
         '{ "id": "1", "username": "John", "avatar_url": "http://placekitten.com/g/300/300" }']); 
    const response = getUser(userId); 
    server.respond(); 
    response.then(function(result){ 
     console.log("result:",result); //The code doesn't get here 
     result.should.deep.equal({ "id": "1", "username": "John", "avatar_url": "http://placekitten.com/g/300/300" }); 
     }); 
    }); 

}); 

mocha.run(); 

Répondre

1

Comme fatso83 dit dans here:

Fetch est un autre API de XHR. La bibliothèque sous-jacente de l'enchaînement XHR, nise, ne supporte que XHR (et Sinon, Sinon). Vous pouvez consulter sinonjs/nise#7 pour quelques conseils sur la façon d'accomplir cela.


Ce code qui est écrit par Mark Middleton m'a aussi aidé à faire le test:

Sinon to mock a fetch call