2012-06-22 12 views
5

मैं Recurly.js के साथ अपने रेल आवेदन को एकीकरण पर काम कर रहा हूं।capybara के साथ rspec अनुरोध spec में JSONP कॉल का नकल कैसे करें?

इससे पहले कि मैं अपने सर्वर साइड आवेदन से recurly करने के लिए अनुरोध कर रहा था, इसलिए मैं उत्कृष्ट वीसीआर मणि (https://github.com/myronmarston/vcr), लेकिन Recurly.js JSONP का उपयोग कर जावास्क्रिप्ट कोड से सेवा करने के लिए सीधे अनुरोध करता है के साथ अपने सभी एकीकरण ठूंठ में सक्षम था।

सवाल यह है कि इन जेसनपी कॉल को एकीकरण परीक्षण में कैसे नकल करना है?

वर्तमान में मैं rspec + capybara + phantomjs ड्राइवर (https://github.com/jonleighton/poltergeist)

उत्तर

3

उपयोग कर रहा हूँ जावास्क्रिप्ट पैचिंग ऑन-द-मक्खी केवल दृष्टिकोण मैं के साथ आया है। जहां तक ​​Poltergeist मणि परीक्षण ब्राउज़र में जावास्क्रिप्ट सही निष्पादित करने के लिए एक विधि है, तो आपको निम्न पैच परीक्षण मोड में Recurly.js चालू करने के लिए आवेदन कर सकता है:

# The original 'save' function performs JSONP request to Recurly. 
# A token is borrowed during the real API interaction. 
page.driver.execute_script(""" 
    Recurly.Subscription.save = function (options) { 
    Recurly.postResult('/subscription', { token: 'afc58c4895354255a422cc0405a045b0' }, options); 
    } 
""") 

बस एक capybara-मैक्रो बनाने के लिए, एक देना फैंसी नाम जैसे 'stub_recurly_js' और Recurly.js रूपों को सबमिट करने से पहले हर बार आह्वान करें। http://pieoneers.tumblr.com/post/32406386853/test-recurlyjs-in-ruby-using-rspec-capybara-phantomjs

+1

लोन लिंक [एक गरीब जवाब माना जाता] है (http://stackoverflow.com/faq#deletion) के बाद से यह अपने आप में कोई मतलब नहीं है और लक्ष्य संसाधन में जिंदा होने की गारंटी नहीं है भविष्य। [यह बेहतर होगा] (http://meta.stackexchange.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। – j0k

2

उपयोग puffing-billy:

यहाँ भी मूल पोस्ट के लिए एक लिंक यदि आप एक बेहतर जानकारी के लिए चाहते हैं। यह आपके परीक्षण ब्राउज़र और बाहरी दुनिया के बीच एक प्रॉक्सी सर्वर इंजेक्ट करता है, और आपको विशिष्ट यूआरएल के लिए नकली प्रतिक्रिया देता है।

उदाहरण:

describe 'my recurly jsonp spec' do 

    before do 
    # call proxy.stub to setup a fake response 
    proxy.stub 'https://api.recurly.com/v2/foo', :jsonp => { :bar => 'baz' } 
    end 

    it 'does something with recurly' do 
    .... 
    end 
end 
संबंधित मुद्दे