Cakephp 3-IntegrationTestTrait中的查询装置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cakephp 3-IntegrationTestTrait中的查询装置相关的知识,希望对你有一定的参考价值。
我在查询TestCase中已加载的Fixture时遇到IntegrationTestTrait时遇到问题。我想验证夹具中是否已存在记录,然后插入重复记录并验证数据库中仍然只有1条记录。
在测试用例初始化期间,我设置了用于身份验证的会话变量。
public function setUp()
parent::setUp();
$this->loadFixtures(
'Students', 'Users');
// Configure Authentication
$this->session([
'Auth' => [
'User' => [
'id' => 21896,
'institution_id' => 1,
'student_id' => null,
'contact_id' => 91,
'email' => 'AuthenticatedEmail@school.edu',
'role' => 'DSP',
'is_admin' => false
]
]
]);
// Load Tables
$this->Students = TableRegistry::getTableLocator()->get('Students');
在我的测试用例中,我检查数据库是否包含记录,然后提交POST请求,然后进行测试以查看记录是否未插入。
public function testAddStudentSuccess()
$data = [
'institution_id' => 1,
'contact_id' => null,
'id_number' => '200XYZ',
'last_name' => 'Trimor',
'first_name' => 'Paul',
'email' => '1_test@email.com'
];
// Test Pre-condition
$query = $this->Students->find('all')->where([
'id_number' => $data['id_number']
]);
$this->assertEquals(1, $query->count());
$this->post('students/add', $data);
// Test Post-condition
$this->assertResponseSuccess();
$query = $this->Students->find('all')->where([
'id_number' => $data['id_number']
]);
$this->assertEquals(1, $query->count());
但是,当我运行测试用例时,出现以下错误:
Notice Error: Undefined variable: _SESSION in/var/www/html/samusg/src/Model/Table/StudentsTable.php, line 206]
几件事:
- 最后一个断言有效!提交
$this->post('students/add', $data)
后,将在$query
中填充数据。 - 第一个断言不起作用。我在调用
$this->post()
之前调试了夹具,它返回空。 - 在测试表中,有一个针对
$_SESSION
变量的测试,这是第206行所引用的。
长话短说:在测试用例开始时,没有用数据填充夹具,但是一旦集成运行,夹具就神奇地包含了所有数据。我收到$ _SESSION错误,但是我已经在setUp()
中设置了会话,所以我迷路了。
非常感谢您的帮助。谢谢
答案
我通过直接在我的测试中设置$ _SESSION超级全局变量来传递此消息:
public function setUp()
parent::setUp();
$this->loadFixtures(
'Students', 'Users');
// Configure Authentication
$this->session([
'Auth' => [
'User' => [
'id' => 21896,
'institution_id' => 1,
'student_id' => null,
'contact_id' => 91,
'email' => 'AuthenticatedEmail@school.edu',
'role' => 'DSP',
'is_admin' => false
]
]
]);
$_SESSION = [
'Auth' => [
'User' => [
'id' => 21896,
'institution_id' => 1,
'student_id' => null,
'contact_id' => 91,
'email' => 'AuthenticatedEmail@school.edu',
'role' => 'DSP',
'is_admin' => false
]
]
];
以上是关于Cakephp 3-IntegrationTestTrait中的查询装置的主要内容,如果未能解决你的问题,请参考以下文章
php [cakephp:mysqldump] mysqldumpのcakephp実装サンプル。#php #cakephp #mysql
使用 Cakephp-jwt-auth [CakePHP 3] 过期后颁发新令牌
从 cakephp 3.x 迁移到 cakephp 4.x [关闭]