Ich versuche meine Laravel App von Behat zu testen. Es gibt eine Homepage mit Feldern für Name, E-Mail und "Registrieren" Button. Ich versuche Taste in Behat-Test zu drücken, aber ich habe einen Fehler Fatal error: Call auf eine Elementfunktion drücken() auf null (Behat \ Testarbeiten \ Anruf \ Exception \ FatalThrowableError)Behat Laravel kann nicht finden submit
Mein HTML:
<html>
<head>
</head>
<title>Registration</title>
<body>
<form action="/thanks" name="register">
<p align="center"><font size="4"><b>Please, enter your name and e-mail</b></font></p>
<p align="center"><input name="name" type="text" value="name"></p>
<p align="center"><input name="email" type="text" value="e-mail"></p>
<p align="center"><input name="registerButton" type="submit" value="Register"></p>
<p> </p>
</form>
</body>
</html>
Meine FeatureContext Funktion:
/**
* @When I press the :submit
*/
public function iPressTheSubmit($submit) {
$element=$this->getSession()->getPage()->findButton($submit);
$element->click();
}
Szenario:
Scenario: Register Test
Given I am on the homepage
When I press the "registerButton"
Then I should be on "/thanks"
Ausgang:
Scenario: Register Test # features/regpage.feature:4 Given I am on the homepage # FeatureContext::iAmOnHomepage() When I press the "registerButton" submit # FeatureContext::iPressTheSubmit() Fatal error: Call to a member function press() on null (Behat\Testwork\Call\Exception\FatalThrowableError) Then I should be on "/thanks" # FeatureContext::assertPageAddress() --- Failed scenarios: features/regpage.feature:4 1 scenario (1 failed) 3 steps (1 passed, 1 failed, 1 skipped)
behat.yml: default: extensions: Laracasts\Behat: # env_path: .env.behat Behat\MinkExtension: default_session: laravel base_url: localhost:8000 laravel: ~
Fataler Fehler, weil das Element nicht gefunden wird und der findButton gibt null zurück und Sie versuchen, auf Null zu drücken. Verwenden Sie eine Wartebedingung, um auf das Element zu warten, das die Ausnahme auslöst, wenn das Element nicht gefunden wird. hast du versucht $ this-> getSession() -> getPage() -> pressButton ('yourButton'); ? – lauda