2013-02-25 13 views
8

Ich schreibe Komponententests in Jasmine für Backbone-Anwendung. Und natürlich verwende ich Sinon in meinen Tests. Aber jetzt habe ich ein Problem. Ich schreibe Tests für den Login-Bildschirm und ich muss Serverantwort simulieren - weil Server sehr schlecht funktioniert. Nun ist mein Code sieht:So filtern Sie Anfragen in Sinon

describe('Login', function(){ 
    it('Should simulate server response', function(){ 
     server = sinon.fakeServer.create(); 
     server.respondWith("GET", "http:\\example.com", [200, {"Content-Type": "application/json"}, '{"Body:""asd"}']) 
    }) 
    $('body').find('button#login').trigger('click'); 
    server.respond(); 
    server.restore() 
    console.log(server.requests); 
}) 

Und dieser Code funktioniert gut, aber ich sehe in der Konsole, die alle Anforderungen täuscht, aber während Anmeldung Ich habe auch andere Anfragen, und ich brauche keine gefälschten Server für sie zu verwenden. Es ist Anfragen für den nächsten Bildschirm. Vielleicht gibt es einen Weg, Filter zu machen oder gefälschte Antworten für spezielle Anfragen zu verwenden. Hilf mir bitte. Vielen Dank.

Antwort

9

Der Trick besteht darin, Filter auf dem Objekt FakeXMLHttpRequest des Servers zu verwenden. Dann verwendet nur die Anforderung, die Sie herausfiltern, den falschen Server:

server = sinon.fakeServer.create(); 
server.xhr.useFilters = true; 

server.xhr.addFilter(function(method, url) { 
    //whenever the this returns true the request will not faked 
    return !url.match(/example.com/); 
}); 

server.respondWith("GET", "http:\\example.com", [200, {"Content-Type": "application/json"}, '{"Body:""asd"}']) 
Verwandte Themen