8

के साथ पुशर का परीक्षण कैसे करें मैं फेसबुक शैली अधिसूचनाओं के लिए पुशर का उपयोग कर रहा हूं। मैंने यह जांचने के लिए एक सरल आरएसपीसी परीक्षण स्थापित किया है कि पुशर ट्रिगर हो गया है।आरएसपीसी

scenario "new comment should notify post creator" do 
    sign_in_as(user) 
    visit user_path(poster) 
    fill_in "comment_content", :with => "Great Post!" 
    click_button "Submit" 

    client = double 
    Pusher.stub(:[]).with("User-1").and_return(client) 
    client.should_receive(:trigger) 
end 

यह परीक्षण पास हो जाता है। हालांकि अगर मैं समान कोड का उपयोग करके एक और परीक्षण करता हूं (एक ही चीज़ को दो बार परीक्षण करता हूं), दूसरा परीक्षण पास नहीं होता है। इससे कोई फर्क नहीं पड़ता कि मैंने एक ही फाइल में एक अलग फ़ाइल या एक अलग परीक्षण किया है। मैं अनिवार्य रूप से केवल एक बार पुशर का परीक्षण कर सकता हूं।

त्रुटि है कि मैं के लिए दूसरे टेस्ट है मिलता है ...

Failure/Error: client.should_receive(:trigger) 
    (Double).trigger(any args) 
    expected: 1 time with any arguments 
    received: 0 times with any arguments 

उत्तर

0

यह एक पुरानी सवाल हो सकता है लेकिन मैं अपने जवाब जोड़ना चाहते थे।

it "user can publish the question" do 
    expect_any_instance_of(Pusher::Client).to receive(:trigger) 
    visit event_path(event) 
    click_on 'Push Question to Audience' 
    expect(current_path).to eq question_path(@question) 
    expect(page).to have_content 'Question has been pushed to the audience' 
end 

हम भी पुशर नकली जो विकास और https://github.com/tristandunn/pusher-fake पर उपलब्ध के परीक्षण के लिए एक नकली पुशर सर्वर है प्रयोग किया है: एक रेल app में RSpec के साथ पुशर परीक्षण जब पहले से, हम सुविधा चश्मा इस प्रकार लिखा था।

"जब दौड़ते हैं, तो दो यादृच्छिक खुले बंदरगाहों पर एक पूरी नकली सेवा शुरू की जाती है। कनेक्शन को पुशर खाते की आवश्यकता के बिना सेवा में बनाया जा सकता है। सॉकेट और वेब सर्वर के लिए मेजबान और बंदरगाह जांच कर पाया जा सकता है विन्यास। "

require "rails_helper" 

feature "Server triggering a message" do 
    before do 
    connect 
    connect_as "Bob" 
    end 

    scenario "triggers a message on the chat channel", js: true do 
    trigger "chat", "message", body: "Hello, world!" 

    expect(page).to have_content("Hello, world!") 

    using_session("Bob") do 
     expect(page).to have_content("Hello, world!") 
    end 
    end 

    protected 

    def trigger(channel, event, data) 
    Pusher.trigger(channel, event, data) 
    end 
end 

https://github.com/tristandunn/pusher-fake-example

पर एक इस दृष्टिकोण को दिखाने के लिए एक उदाहरण रेपो पाया जा सकता है: यह तो तुम क्या करने की अनुमति देता है