テストで使用sleep()
する以外に、フォーム送信 (POST) が完了するのを明示的に待ってからアサーションを続行するためのより良い戦略を誰かが知っているかどうか疑問に思っています。これは、phpunit を Facebookの php-webdriverと一緒に使用して、私のテストがどのように見えるかを非常に要約したバージョンです)。
function test_form_submission()
{
// setup
$web_driver = new WebDriver();
$session = $web_driver->session();
$session->open('http://example.com/login');
// enter data
$session->element('css selector', 'input[name=email]')->value(array('value' => str_split('test@example.com')));
$session->element('css selector', 'input[name=password]')->value(array('value' => str_split('testpassword')));
// click button to submit form
$session->element('css selector', 'button[name=submit]')->click();
// How do I wait here until the click() above submits the form
// so I can check that we correctly arrives at the destination below
// without resorting to sleep()?
// Confirm that login was successful because we landed on account page
$this->assertSame('http://example.com/account', $session->url());
// teardown
$session->close();
}