2016-07-20 5 views
-1

に常にRSpecの結果とシナトラアプリのカピバラを統合します。私は小さなテストアプリケーションを作成し、同じ問題があります。私はいつも504タイムアウトエラーが発生し、acceptity_helperのLine Capybara.app = Testappに関係なく、Capybaraによって実際にアプリケーションがロードされていないと思います。は、私はカピバラは私のモジュラーシナトラアプリでの作業を取得していない504回のテスト

ブラウザFirefoxは、テストが実行されているが、任意のURLに行っていないと、常に空白のサイトを示していたときに開きます。

私はそれが動作するだけでRSpecのと同じテスト(1秒)を行います。私が間違ってやっている何

マイセットアップ:

OS: Win 7 Professional 64-bit 
Ruby version: ruby 2.2.2p95 (2015-04-13 revision 50295) [x64-mingw32] 
Firefox version: 40.0.3 

gem versions 
- sinatra (1.4.6) 
- rspec (3.3.0) 
- capybara (2.7.1) 
- selenium-webdriver (2.53.4) 
- thin (1.5.1) 
- rack (1.6.4) 
- rack-test (0.6.3) 

アプリケーション構造:

test_sinatra_capybara 
| 
|- testapp.rb 
|- spec 
| |- spec_helper.rb 
| |- acceptance_helper.rb 
| |- testapp_spec.rb 
|- views 
| |- index.slim 

testapp.rb

require 'sinatra' 
require 'sinatra/base' 
require 'slim' 

class Testapp < Sinatra::Base 
    get '/' do 
    slim :index 
    end 
end 

index.slim

#test-id 
    | Willkommen 

spec_helper.rb

require 'rspec' 
require 'rack/test' 
require_relative '../testapp' 
Testapp.environment = :test 

module RSpecMixin 
    include Rack::Test::Methods 
    def app() Testapp end 
end 

RSpec.configure do |config| 
    config.include RSpecMixin 
    # Use color in STDOUT 
    config.color = true 

    # Use the specified formatter 
    config.formatter = :documentation 

    config.expect_with :rspec do |expectations| 
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true 
    end 

    config.mock_with :rspec do |mocks| 
    mocks.verify_partial_doubles = true 
    end 

end 

acceptance_helper.rb

require File.dirname(__FILE__) + '/spec_helper' 

require 'capybara' 
require 'capybara/rspec' 

Capybara.default_driver = :selenium 

Capybara.app = Testapp 

RSpec.configure do |config| 
    config.include Capybara::DSL 
    config.include Capybara::RSpecMatchers 
end 

testapp_spec.rb

require File.dirname(__FILE__) + '/acceptance_helper' 

describe 'URLs that require login' do 
    it "start page capybara" do 
    # I tried both 
    visit '/' 
    # visit 'http:localhost:4567' 

    page.should have_content("Willkommen") 
    end 

    it "start page rspec" do 
    get "/" 

    expect(last_response.body).to include("Willkommen") 
    end 
end 

最後のテストが働いているので、私が言ったように:最初のテストで

Finished in 12.91 seconds (files took 2.54 seconds to load) 
2 examples, 1 failure 

Failed examples: 

rspec ./spec/testapp_spec.rb:4 # URLs that require login start page capybara 

エラー:

Selenium::WebDriver::Error::WebDriverError: 
unexpected response, code=504, content-type="text/html" 
+0

を設定することにより、あなたは 'visit'どのURLの後にテストを一時停止する場合があることを行うことができます接続しようとしているブラウザは何ですか? –

+0

代理人とのあなたの権利は重要です。その情報を表示するのを忘れました。しかし、Localhost(127.0.0.1)は影響を受けません。そして私は手動でそれを無効にし、まだ動作しません。カピバラは、ブラウザを開くことができるように、ブラウザの ウィンドウは常に空白ですが、それは私の意見では任意のURLに行くことができません。 私の現在のFFバージョンは40.0.3です。なぜなら私のopionionでは古いものではないため、これを最後に試してみる理由でしょう。セレンの宝石は2.53.4 のCapybara.server_ *設定のもののThx私はそれを知らなかったが、まだ失敗しています。 – Quackerjack

答えて

0

は、正確なコードを実行するには、私は手段を推測している私のために罰金作品を掲載しました二つのものの一つ。使用しているFirefoxのバージョンが古い(47.0.1を使用していることを確認してください)か、または127.0.0.1へのリクエストを妨害しているプロキシサーバーまたはファイアウォールを持つマシンにいる場合:<ランダムポート>。デフォルトのCapybara configは127.0.0.1のサーバを起動します:<ランダムポート>を使ってテスト中のアプリケーションのリクエストを処理します。これらの接続がブロックされている場合や他の場所でプロキシされている場合は、明らかに正しく動作しない可能性があります。あなたが別のインターフェイスにバインドする必要があるか、周りの企業のファイアウォール/プロキシの制限を取得するための固定ポートを設定する場合は、Capybara.server_hostとCapybara.server_port

+0

私のセットアップでは、いくつかの非常に奇妙なものとtodoがあります。 私はbabun(cygwin)をインストールし、その時点から常にテストを実行しています。私はWindowsの普通のcmdでそれをやっています...なぜこれだけですが、今は私の解決策です。 私のセットアップが壊れてしまって、あなたの答えが私にカピバラのセットアップにできるいくつかの新しい情報を与えるので、私はあなたに正しい答えを与えます。 THX。 – Quackerjack

関連する問題