2017-05-02 4 views
0

Ich versuche, sinon.fakeServer zu bekommen, damit Axios eine gefälschte Antwort zurückgeben. Anstatt die verspotteten Nutzdaten zurückzugeben, kann ich die Netzwerkanforderung 404 sehen oder eine Zeitüberschreitung versuchen, um zur tatsächlichen URL zu gelangen.Sinon fakeServer mit Mokka und Axios

Mein Setup:

describe('test call',() => { 
    var server; 
    beforeEach(() => { 
     server = sinon.fakeServer.create(); 
     server.respondWith(
     "https://my.domain.com/myresource", 
     [200, { "Content-Type": "application/json" }, "[]"] 
    ); 
     server.autoRespond = true 
    }); 
    it('returns empty array', done => { 
     axios 
     .get('https://my.domain.com/myresource') 
     .then(res => { 
      expect(true).to.equal(true); 
      done() 
     }) 
     .catch(err=>{ 
      console.log(err.message); 
      expect(false).to.equal(true); 
      done(); 
     }); 
    }); 
    afterEach(() => { 
     server.restore(); 
    }); 
    }) 

Antwort

1

Es scheint, dass Ihre Ausführungsumgebung NodeJS ist, obwohl es ist nicht erwähnt. Andere hatten das gleiche Problem - werfen Sie einen Blick auf here.

Auch das Sinon-Team erwähnt, dass es outside their scope ist, da XHR im Browser korrekt funktionieren sollen, wo ihr falscher Server wie erwartet funktioniert, da er das XHR-Objekt stubbt.

Axios verwendet eine andere Bibliothek zum Ausführen von Anfragen beim Ausführen auf dem Server, daher kann dieses Szenario standardmäßig nicht funktionieren. Es gibt spezielle Spott-Bibliotheken für Axios wie moxios als eine Alternative.