无法在Codeception acceptance\u bootstrap.php中运行Auth::loginUsingId(1)
我正在使用Laravel和Codeception进行验收测试。我的大多数测试都要求用户登录,因此我想将这些行为提取到acceptance文件夹中的_bootstrap.php文件中。我知道这是在测试之前在Codeception中运行安装程序的做法 我可以确认我的users表存在我正在使用Navicat查看它,并且id为1的用户存在。据我所知,Codeception已正确配置为使用此数据库。我还为验收套件提供了Laravel4和Db模块。当我尝试运行我的验收套件或任何单独的验收测试时,我收到以下错误 控制台: 无论任何验收证书的内容如何,我都会收到此错误。即使是一个简单的$I->amOnPage'/'或$I->comment'test'仍然会导致错误。我相信只要遇到_bootstrap.php文件中的命令,就会发生错误。不知怎么的,它可以访问我的数据库。我应该注意到,我还尝试了启用和禁用Laravel4和Db模块的填充和清理设置的各种组合,但都没有成功 这是我的acceptance/_bootstrap.php文件: acceptance.suite.yml:无法在Codeception acceptance\u bootstrap.php中运行Auth::loginUsingId(1),php,laravel,codeception,Php,Laravel,Codeception,我正在使用Laravel和Codeception进行验收测试。我的大多数测试都要求用户登录,因此我想将这些行为提取到acceptance文件夹中的_bootstrap.php文件中。我知道这是在测试之前在Codeception中运行安装程序的做法 我可以确认我的users表存在我正在使用Navicat查看它,并且id为1的用户存在。据我所知,Codeception已正确配置为使用此数据库。我还为验收套件提供了Laravel4和Db模块。当我尝试运行我的验收套件或任何单独的验收测试时,我收到以下错
首先,您不应该将Laravel4模块用于Codeception验收测试。它仅用于功能和单元测试 要回答关于在验收测试中自动登录用户的特定问题,我将这样做: /tests/_support/AcceptanceHelper.php /测试/验收/示例st.php
注意:我使用小写$I而不是$I-我发现它更容易键入-因此您可能需要将代码中的所有$I更改为$I首先,您不应该使用Laravel4模块进行Codeception验收测试。它仅用于功能和单元测试 要回答关于在验收测试中自动登录用户的特定问题,我将这样做: /tests/_support/AcceptanceHelper.php /测试/验收/示例st.php 注意:我使用smallcase$I而不是$I-我发现它更容易键入-因此您可能需要将代码中的所有$I更改为$I
[Illuminate\Database\QueryException]
SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "users" does not exist
LINE 1: select * from "users" where "id" = $1 limit 1
^ (SQL: select * from "users" where "id" = 1 limit 1)
<?php
Auth::loginUsingId(1);
actor: Tester
paths:
tests: tests
log: tests/_output
data: tests/_data
helpers: tests/_support
settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
modules:
config:
Db:
dsn: 'pgsql:host=localhost;dbname=myapp'
user: 'someuser'
password: 'somepass'
dump: tests/_data/dump.sql
class_name: AcceptanceTester
modules:
enabled:
- AcceptanceHelper
- Laravel4
- PhpBrowser
- Db
config:
PhpBrowser:
url: 'http://localhost'
Laravel4:
cleanup: false
Db:
populate: true
cleanup: false
<?php
namespace Codeception\Module;
use \AcceptanceTester;
class AcceptanceHelper extends \Codeception\Module
{
// This is my default user I use for all my tests
public function loginUser(AcceptanceTester $i)
{
$this->login($i, 'user@test.com', 'tester');
}
// And this function lets me login a specific user if I need someone else
public function login(AcceptanceTester $i, $email, $password)
{
$i->amOnPage('/login');
$i->fillField('email', $email);
$i->fillField('password', $password);
$i->click('submit');
$i->seeCurrentUrlEquals('/dashboard');
}
public function logoutUser(AcceptanceTester $i)
{
$i->amOnPage('/logout');
$i->seeCurrentUrlEquals('/login');
$i->see('You have been logged out');
}
}
<?php
use \AcceptanceTester;
class ExampleCest
{
public function _before(AcceptanceTester $i)
{
$i->loginUser($i);
}
public function tryToViewDashboard(AcceptanceTester $i)
{
// User is logged in here
$i->amOnPage('/dashboard');
}
public function tryOtherExample(AcceptanceTester $i)
{
// User is logged in here
$i->amOnPage('/dashboard');
}
public function tryMoreInfo(AcceptanceTester $i)
{
// User is logged in here
$i->amOnPage('/dashboard');
}
}