2013-02-25 82 views
8

我正在爲Jasmine for Backbone應用程序編寫單元測試。當然,我在測試中使用Sinon。但現在我有問題。我正在編寫測試登錄屏幕,我需要模擬服務器響應 - 因爲服務器工作非常糟糕。現在,我的代碼如下:如何篩選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); 
}) 

而這個代碼工作正常,但我在那個假貨的所有請求控制檯中看到的,但在登錄過程中我也有其他的要求,我不需要用假服務器爲他們。它是下一個屏幕的請求。也許存在的方式來使過濾器或使用假響應的特殊要求。請幫幫我。謝謝。

回答

9

訣竅是在服務器的FakeXMLHttpRequest對象上使用過濾器。那麼只有你過濾掉的請求將使用假服務器:

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"}']) 
相關問題