2017-12-28 40 views
1

アプリケーション:ローカル(基本的には空白):ベイグラントVM上でテストをやってリモートテスト:不正なURLでフォームの送信結果(404 =>ネット:: HTTPNotFound)テストされている

アプリケーションを実行しているCakePHPのアプリレールcapybara-mechanize

10 examples, 1 failure 

不全のアプリは次のとおりです。

404 => Net::HTTPNotFound 

するのは、私のVMが

上で実行中のアプリを持っているとしましょう210
'www.domain.comx' 

障害シナリオはホームページにアクセスし、ログインして新しいものを作成し、そのフォームを記入して保存をクリックします。

テストでは、返されたページにある情報が正しく保存されているかどうかを調べます。

コードはフォーム提出まで問題なく実行されますが、保存URLは奇妙になります。代わりに

'www.domain.comx/something/something/create' 

'www.domain.comx/something/create' 

それが起こっているのに

'www.domain.comx/something/new' 

から行くと、エラーを投げるの

コードのどこかに、URLに「何か」が重複する場所があります。

この問題の原因は何ですか?

私はリダイレクトやものを調べようとしていますが、解決策を見つけることができません。

アプリは生きており、25歳のチームでほぼ5年間使用されています。テストは合格でなければなりません。

ここに役立ちます場合は、トレース、です:ここで

# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:125:in `rescue in process_remote_request' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:103:in `process_remote_request' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:43:in `block (2 levels) in <class:Browser>' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:69:in `process' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:41:in `process_and_follow_redirects' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:32:in `submit' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/form.rb:80:in `submit' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/node.rb:8:in `click' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:in `block in click' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/base.rb:85:in `synchronize' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:in `click' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/actions.rb:25:in `click_link_or_button' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/session.rb:810:in `block (2 levels) in <class:Session>' 
# /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/dsl.rb:50:in `block (2 levels) in <module:DSL>' 

をフォームのHTMLのダウン易しく書き直さバージョンです:

<form id="create" method="post" action="something/create"> 

    <div class="form-group col-md-4"> 
    <div class="form-group"> 
    <label for="usuario_email">E-mail *</label> 
    <input type="email" name="data[usuario][email]" id="usuario_email" class="form-control"> 
    </div> 
    </div> 

    <div class="form-group col-md-4"> 
    <label for="usuario_nome">Nome *</label> 
    <input type="text" name="data[usuario][nome]" id="usuario_nome" class="form-control"> 
    </div> 

    <div class="form-group col-md-4"> 
    <label for="usuario_telefone">Telefone *</label> 
    <input type="text" name="data[usuario][telefone]" id="usuario_telefone" class="form-control" alt="phone"> 
    </div> 

    <div class="form-group col-md-6"> 
    <div class="pull-right"> 
    <button type="submit" class="btn btn-success btn-lg" id="salvar"> 
    <span class="glyphicon glyphicon-ok"></span> 
    </button> 
    </div> 
    </div> 

</form> 
+0

フォームのHTMLとは何ですか? –

+0

私はフォームのhtmlを質問に追加しました。 – vivipoit

答えて

1

これは、あなたのアクションパスが相対的であるため、正しく機能しているように見えるが、 。あなたが期待している動作のためには、フォームのアクション属性が、あなたがそうであるかどうかに応じて、 "作成"(相対)、 "/ something/create"(絶対)、または "../something/create"異なるURLで同じフォームを使用し、それらのURLでも同じように動作する必要があります。

+0

パーフェクト。ありがとうございました!フォームのアクションを "/ something/create"に変更しました。 – vivipoit