2013-02-25 20 views
8

Jasmine for Backbone uygulamasında birim testleri yazıyorum. Ve elbette, testlerimde Sinon'u kullanırım. Ama şimdi problemim var. Giriş ekranı için test yapıyorum ve sunucu yanıtını simüle etmem gerekiyor - çünkü sunucu çok kötü çalışıyor.Sinon'da istekleri filtrelemek için:

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); 
}) 

Ve bu kod çalışıyor, ama tüm istekleri sahte konsolda görüyorum ama Girişi sırasında ben de diğer istekleri var ve onlar için sahte sunucu kullanmak gerekmez: Artık benim kod görünüyor. Bir sonraki ekran için istekleri. Belki de özel isteklere filtre yapmak veya sahte cevaplar kullanmak için bir yol var. Bana yardım et lütfen. Teşekkürler.

cevap

9

Hile, sunucunun FakeXMLHttpRequest nesnesindeki filtreleri kullanmaktır. Ardından, yalnızca filtrelediğiniz istek, sahte sunucuyu kullanır:

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"}']) 
İlgili konular