2013-02-25 16 views
8

Sto scrivendo unit test in Jasmine per l'applicazione Backbone. E ovviamente uso Sinon nei miei test. Ma ora ho un problema. Sto scrivendo i test per la schermata di login e ho bisogno di simulare la risposta del server - perché il server funziona molto male. Ora il mio codice è:Come filtrare le richieste 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); 
}) 

E questo codice funziona bene, ma vedo in console che finge tutte le richieste, ma durante Accesso ho anche altre richieste, e non ho bisogno di utilizzare il server fasullo per loro. Sono richieste per il prossimo schermo. Forse esiste un modo per fare filtri o usare risposte false per richieste speciali. Aiutami per favore. Grazie.

risposta

9

Il trucco è utilizzare i filtri sull'oggetto FakeXMLHttpRequest del server. Quindi, solo la richiesta filtrata utilizzerà il server falso:

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"}']) 
Problemi correlati