我正试图通过Behat测试我的Laravel应用程序。 有一个主页,上面有姓名,电子邮件和“注册”按钮的字段。我正在尝试按下behat-test中的按钮,但是我有一个错误致命错误:在null上调用成员函数press()(Behat \ Testwork \ Call \ Exception \ FatalThrowableError)
我的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>
我的FeatureContext功能:
/**
* @When I press the :submit
*/
public function iPressTheSubmit($submit) {
$element=$this->getSession()->getPage()->findButton($submit);
$element->click();
}
情景:
Scenario: Register Test
Given I am on the homepage
When I press the "registerButton"
Then I should be on "/thanks"
输出:
场景:注册测试#features / regpage.feature:4 鉴于我在主页上#FeatureContext :: iAmOnHomepage() 当我按下“registerButton”时,提交#FeatureContext :: iPressTheSubmit() 致命错误:在null上调用成员函数press()(Behat \ Testwork \ Call \ Exception \ FatalThrowableError) 然后我应该在“/ thanks”#FeatureContext :: assertPageAddress() ---失败的场景: 特征/ regpage.feature:4 1个场景(1个失败) 3个步骤(1个通过,1个失败,1个跳过)
behat.yml:
default:
extensions:
Laracasts\Behat:
# env_path: .env.behat
Behat\MinkExtension:
default_session: laravel
base_url: localhost:8000
laravel: ~
答案 0 :(得分:1)
我用2个步骤修复它: 1.在.env和.env.behat文件中设置APP_KEY参数 2.修复FeatureContent文件,如下所示:
/**
* @When I press the :arg1
*/
public function iPressThe($arg1)
{
$element=$this->getSession()->getPage()->find('named', array('id_or_name', $arg1));
$element->press();
}
答案 1 :(得分:0)
是不是要将PHP文档块解析为自定义FeatureContext方法之上?
@When I press the :submit
看起来像是使用了Jhat选择器语法,Behat可能无法使用或使用。查看基础FeatureContext
类中的类似示例。