2013-02-25 40 views
8

में अनुरोधों को फ़िल्टर करने के लिए कैसे मैं बैकबोन एप्लिकेशन के लिए जैस्मीन में यूनिट परीक्षण लिख रहा हूं। और निश्चित रूप से मैं अपने परीक्षणों में साइनऑन का उपयोग करता हूं। लेकिन अब मुझे समस्या है। मैं लॉगिन स्क्रीन के लिए परीक्षण लिख रहा हूं और मुझे सर्वर responce अनुकरण की आवश्यकता है - क्योंकि सर्वर बहुत खराब काम करता है। अब मेरी कोड दिखता है:साइनऑन

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