2010-12-28 2 views
1

Мне нужно добавить значение в $ _POST, в частности «порт», поэтому я могу сообщить, что моя тестовая подача проходит через fakemail.

The fakemail documentation показывает, как вставить значение $ _POST с SimpleTest:

$this->clickSubmit('Send', array('port' => 10025)); 

В PHPUnit, это не работает:

$this->click("//input[@value='Send']", array('port' => 10025)); 

Я очень незнаком со всеми понятиями позади тестирование, поэтому это может быть проще, чем я это делаю. Как вы могли бы выполнить работу с помощью PHPUnit/Selenium?

ответ

1

Не тестировали это в phpunit, но в Selenium IDE вы можете сменить скрытые поля с помощью javascript.

Тестовая страница:

<html><head></head><body> 

<?php print_r($_POST); ?> 

<br/><br/> 
<form action="test.php" method="POST"> 
    <input type="hidden" id="hhh" name="hhh" value="orig"/> 
    <input type="text" name="ttt"/> 
    <input type="submit" name="sss"/> 
</form> 
</body></html> 

Script (сгенерированный из FireFox IDE, поэтому не проверял):

<?php 
require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; 

class Example extends PHPUnit_Extensions_SeleniumTestCase 
{ 
    protected function setUp() 
    { 
    $this->setBrowser("*chrome"); 
    $this->setBrowserUrl("http://localhost/test.php"); 
    } 

    public function testMyTestCase() 
    { 
    $this->type("ttt", "bbb"); 
    $this->runScript("javascript{ this.browserbot.getCurrentWindow().document.getElementById('hhh').value = 'new2'; }"); 
    $this->click("sss"); 
    } 
} 
?> 

Так просто добавить переменную port как скрытое поле и установите значение с javascript.