समाधानcapybara, phantomjs और रेल
यह काम के साथ उप डोमेन पर परीक्षण जावास्क्रिप्ट। मुख्य सार यह है कि मुझे Capybara.server_port
और Capybara.app_host
सेट करना होगा और साइन इन फॉर्म में मैन्युअल रूप से साइन इन करना होगा। Capybara.app_host
गतिशील सबडोमेन के साथ सेट नहीं किया जा सकता है जब तक कि यह एक चर में घोषित नहीं किया जाता है। सभी यूआरएल को कड़ी मेहनत करनी होगी।
require 'spec_helper'
feature 'customer' do
let(:user) {FactoryGirl.create(:user)}
let(:firm) {user.firm}
let(:customers) {"http://#{firm.subdomain}.lvh.me:31234/customers"}
let(:root_url) {"http://#{firm.subdomain}.lvh.me:31234/"}
before(:all) do
Capybara.server_port = 31234
sub = firm.subdomain
Capybara.app_host = root_url
end
def sign_in_on_js
visit root_url
fill_in "Email", :with => user.email
fill_in "Password", :with => "password"
click_button "Sign in"
page.should have_content("Signed in successfully.")
end
scenario "make new", js: true do
sign_in_on_js
visit customers
page.should have_content("Add new customer")
find("#dialog_customer").click
page.should have_content("Create new customer")
end
end
मूल प्रश्न मैं रेल में एक multitenant एप्लिकेशन बनाने रहा हूँ। बहुत सारी जावास्क्रिप्ट होने जा रही है। लेकिन, मैं काम करने के लिए परीक्षण नहीं कर सकता।
:js = true
नहीं चलते समय हर चीज काम करती है। समस्या यह एक
let(:customers) {"http://#{firm.subdomain}.lvh.me:3003/customers"}
scenario "Statistics select", :js => true do
visit customers
page.should have_content("Add new customer")
end
poltergeist वेब capybara यूआरएल नहीं मिल सकता है के लिए ड्राइवर की तरह चश्मा में उठता है और मेरे spec_helper.rb में एक रिक्त पृष्ठ
Failure/Error: page.should have_content("Add new customer")
expected there to be text "Add new customer" in ""
मैं इस राशि देता है
require 'capybara/rspec'
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, :debug => true)
end
Poltergeist और phantomjs वितरित करने का प्रयास करें। मुझे यह आउटपुट
{"name"=>"set_debug", "args"=>[true]}
{"response"=>true}
{"name"=>"visit", "args"=>["http://subdomain2.lvh.me:3003/statistics"]}
poltergeist [1362522132943] state default -> loading
{"response"=>{"status"=>"fail"}}
क्या मुझे यह काम करने के लिए परीक्षण के दौरान सर्वर चलाने की आवश्यकता है?
मैंने सेलेनियम और कैपिबरा-वेबकिट की कोशिश की है, लेकिन फैंटोमज सफलता के निकटतम हो गया है।
मैं भी अलग अलग तरीकों से मेजबान फ़ाइल (शायद सही नहीं)
सेटअप पर कोई सुझावों का स्वागत है बदलने की कोशिश की है!
अद्यतन
हताश पाने के लिए शुरू। अब मैं रेल सर्वर
rails s -e test -p 3001
और फिर मेरे परीक्षण चलाएं।
अब मुझे साइन इन पेज पर रीडायरेक्ट किया जाता है। मैं चश्मा
before(:each) do
login_as(user, :scope => :user)
end
में यह है मैं मैन्युअल रूप से हर कल्पना
क्या आप स्पष्ट रूप से समझा सकते हैं कि आपकी समस्या क्या है? –
अद्यतन प्रश्न –
क्यों सभी यूआरएल को हार्डकोड किया जाना चाहिए? क्या इसमें शामिल है यदि हम ऐसे फैक्ट्री का उपयोग कर रहे हैं जो सबडोमेन के साथ ऑब्जेक्ट उत्पन्न करता है, फिर app_host सेट करने के लिए पहले ब्लॉक का उपयोग कर रहा है? –