[英]Laravel behat CSRF token
我正在尝试进行第一个behat测试,但是当我运行它时,出现了TokenMis ...错误。 我知道为什么。 因为它没有将_token呈现给我的表单。 我检查:
$ this-> getSession()-> getPage()-> getHtml()
我得到:
<input type="hidden" name="_token" value="">
通常它必须是:
<input type="hidden" name="_token" value="Atf3lzQ7McA4zQorUu089X3zPsrLVRE8TvQkVOtm">
所以我的问题是我做错了什么?
我的功能如下:
Feature: User Login
To test if user can login to system
Scenario: Successful Authentication
Given I sign in "email" "pw"
Then I should be sign in
组态:
default:
autoload:
'': %paths.base%/features/bootstrap
suites:
default:
contexts:
- 'FeatureContext'
paths:
- %paths.base%/features/default.feature
user_login_module:
contexts:
- 'UserLoginContext'
paths:
- %paths.base%/features/user-login.feature
extensions:
Laracasts\Behat:
env_path: .env.laravel.behat
Behat\MinkExtension:
default_session: laravel
base_url: http://localhost:8080
laravel: ~
FeatureContext文件(UserLoginContext):
<?php
use Behat\Behat\Context\Context;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;
use Behat\MinkExtension\Context\MinkContext;
use Laracasts\Behat\Context\Migrator;
use Laracasts\Behat\Context\DatabaseTransactions;
use PHPUnit_Framework_Assert as PHPUnit;
class UserLoginContext extends MinkContext implements Context
{
use Migrator, DatabaseTransactions;
/**
* Initializes context.
*
* Every scenario gets its own context instance.
* You can also pass arbitrary arguments to the
* context constructor through behat.yml.
*/
public function __construct()
{
}
/**
* Loads Laravel classes
*
* @static
* @beforeSuite
* @return mixed
*/
public static function bootstrapLaravel ()
{
$app = require __DIR__.'/../../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
return $app;
}
/**
* @Given I sign in :email :password
*/
public function iSignIn($email, $password)
{
$this->visit('admin-panel');
$this->fillField('email', $email);
$this->fillField('password', $password);
$this->pressButton('Prisijungti');
}
/**
* @Then I should be sign in
*/
public function iShouldBeSignIn()
{
PHPUnit::assertTrue(Auth::guard('admin')->check());
//$this->assertPageAddress('admin-panel/home');
}
}
与和具有错误变量相同。 引发错误未定义错误变量
请在刀片文件中包含此CSRF帮助程序功能 。 这将自动生成以下代码<input type="hidden" name="_token" value="2WXMw1BMY2o5irBKcXyzJBDeai9colsqFuVpNGXm">
。
<form action = "{{ url('test') }}" method="POST">
{{ csrf_field() }}
....
....
</form>
编辑1:
我认为behat laravel扩展本身存在问题 ,而不是您的代码存在问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.