2012-02-24 8 views
1

capybara/rspecで統合テストを作成すると、正しいURLとパスが得られたようです。しかし、それは 'click_button'でエラーになります。rspec capybara - サブドメインテスト

注: 'current_urlを置くことは' 正しいパスを返します:http://StoreName1.lvh.me/login

テスト:

require 'spec_helper' 

describe "Account access" do 

    before(:each) do 
    Factory(:plan) 
    Factory(:theme) 
    @account = Factory(:account) 
    set_host("#{@account.url}") 
    end 

    describe "GET /login" do 
    it "should not sign in for invalid details" do 
     Factory(:account, :url => 'dan', :email => '[email protected]') 
     visit "/login" 
     page.should have_content("Sign in to your store") 
     fill_in "email", with: "[email protected]" 
     fill_in "password", with: "donuts" 
     click_button 'Sign in' 
    end 

    end 

    def set_host(host) 
    host! host 
    Capybara.app_host = "http://" + host + ".lvh.me" 
    end 

end 

エラーログ:

1) Account access GET /login should not sign in for invalid details 
    Failure/Error: click_button 'Sign in' 
    ActiveRecord::RecordNotFound: 
     Couldn't find Account with url = StoreName1 
    # ./app/controllers/application_controller.rb:11:in `get_account_info' 
    # (eval):2:in `click_button' 
    # ./spec/requests/accounts_spec.rb:19:in `block (3 levels) in <top (required)>' 
+1

URLはhttp://StoreName1.lvh.me:3000/loginではありませんか? –

答えて

2

私はあなたの設定したホストが見てすべきだと思いますmore like:

def set_host(host) 
    host! = "http://#{host}.lvh.me:#{Capybara.server_port}" 
end 

def host!(&block) 
    before do 
    Capybara.current_session.driver.reset! 
    host! instance_eval(&block) 
    @old_app_host, Capybara.app_host = Capybara.app_host, "http://#{host}" 
    @old_default_host, Capybara.default_host = Capybara.default_host, "http://#{host}" 
    end 

    after do 
    Capybara.current_session.driver.reset! 
    Capybara.app_host = @old_app_host 
    Capybara.default_host = @old_default_host 
    end 
end 
+1

変数には何がありますか? – Galaxy

+0

事前定義された機能の明瞭さが追加されました。 –

関連する問題