отсутствующие переменные POST из нажатия кнопки webrat - PullRequest
0 голосов
/ 06 декабря 2011

У меня возникли проблемы при попытке проверить мое php-приложение с помощью cucumber. По сути, метод button_press не может передать переменные POST buttonName_x и buttonName_y при отправке формы.

Надеюсь, кто-нибудь сможет мне помочь с этим - Заранее спасибо!

РЕДАКТИРОВАТЬ: я смог написать грязный патч для вебрата, чтобы иметь возможность временно решить проблему. Однако я был бы рад услышать о лучшем решении.

Это HTML-код:

                <form id="newsForm" action="/index.php?page=adminpanel&amp;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:&nbsp;<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

1 Ответ

1 голос
/ 15 декабря 2011

Похоже, это был невыполненный запрос в течение некоторого времени.

Есть несколько патчей, связанных с этим потоком, которые вы можете применить к гему webrat локально, хотя, вероятно, это то, что вы уже сделали, так как упоминали, что использовали «грязный патч»!

Вероятно, было бы лучше прокомментировать эту ветку, в частности, ответить на вопрос Брайана:

Достаточно ли передать X / Y 0,0 или 1,1, или кто-то делает что-то, что зависит от точных значений?

И вы можете увидеть, что это решено правильно.

...