Webratのbutton_pressからの投稿変数がありません
質問
CucumberでPHP Webアプリケーションをテストしようとしている間、私はトラブルに遭遇しています。基本的に、button_pressメソッドは、フォームを送信するときにボタンname_xおよびbuttonname_yの投稿変数を送信できません。
誰かがこれで私を助けることができることを願っています - 前もって感謝します!
編集:Webratが一時的に問題を解決できるように、汚いパッチを書くことができました。しかし、私はまだより良い解決策を聞いてうれしいです。
これは問題のHTMLです:
<form id="newsForm" action="/index.php?page=adminpanel&view=newscontrol" method="post">
<table cellpadding="0" cellspacing="0" class="tableList">
<thead id="editor">
<tr>
<th colspan="3">News Editor</th>
</tr>
</thead>
<tbody>
<tr class="rowA">
<td colspan="3">Titel: <input type="text" name="subject" value="'.utf8htmlentities($subject).'" size="121" /></td>
</tr>
<tr class="rowB">
<td colspan="3">
<textarea id="content" name="content" rows="10" cols="10">'.utf8htmlentities($content).'</textarea>
</td>
</tr>
<tr class="submitRow">
<td colspan="3"><input type="image" src="res/images/design/button_preview.gif" name="previewNews" alt="preview" /> <input type="image" src="res/images/design/button_sendx.gif" name="submitNews" alt="submit" /></td>
</tr>
</tbody>
</table>
</form>
失敗した機能の抽出:
Scenario: post news
[...]
When I insert "This is a subject!" for newsForm.subject
And I insert "Magnificient News Post" for newsForm.content
And I press newsForm.submit
[...]
var_dump($ _ post)が生じました。
array(2) { ["content"]=> string(22) "Magnificient News Post" ["subject"]=> string(18) "This is a subject!" }
一方、Firefox経由のリクエストは次のとおりです。
array(4) { ["content"]=> string(22) "Magnificient News Post" ["subject"]=> string(18) "This is a subject!" ["submitNews_x"]=> string(1) "0" ["submitNews_y"]=> string(1) "0" }
私のステップ定義は次のように見えます:
When /^I insert "(.*?)" for (.*?)\.(.*?)$/ do |input, form, item|
within 'form[id="' + form + '"]' do |scope|
scope.fill_in(item, :with => input)
end
end
When /^I press (.*?)\.(.*?)$/ do |form, item|
within 'form[id="' + form + '"]' do |scope|
scope.click_button(item)
end
end
そして最後に、私のenv.rb:
# RSpec
require 'rspec/expectations'
# Webrat
require 'webrat'
require 'test/unit/assertions'
World(Test::Unit::Assertions)
Webrat.configure do |config|
config.mode = :mechanize
end
class MechanizeWorld < Webrat::MechanizeAdapter
include Webrat::Matchers
include Webrat::Methods
Webrat::Methods.delegate_to_session :response_code, :response_body, :response, :redirected_to
end
World do
MechanizeWorld.new
session = Webrat::Session.new
session.extend(Webrat::Methods)
session.extend(Webrat::Matchers)
session
end
解決
これはあたかもそうです 未解決のリクエスト しばらくの間。
Webratの宝石にローカルに適用できるスレッドからリンクされたいくつかのパッチがありますが、これはおそらく「ダーティパッチ」を使用したことに言及したように、おそらくすでに行ったことです。
特にブライアンの質問に応じて、そのスレッドについてコメントするのが最善でしょう。
0,0または1,1のx/yを通過するだけで十分ですか、それとも正確な値に依存する何かをしている人はいますか?
そして、あなたはそれが適切に解決されるのを見るかもしれません。
所属していません StackOverflow