gpt4 book ai didi

unit-testing - cakePHP 中的固定装置名称(测试)

转载 作者:行者123 更新时间:2023-11-29 11:45:54 26 4
gpt4 key购买 nike

我将 fixture 保存在:app/test/fixture/目录

例如app/test/fixture/UserRoleHistoryFixture.php 看起来是这样的

<?php

class UserRoleHistoryFixture extends CakeTestFixture {
public $import = array('model' => 'UserRoleHistory', 'records' => false, 'connection' => 'test');
}

app/Test/Fixture/UserFixture.php 看起来是这样的

 class UserFixture extends CakeTestFixture {
public $import = array('model' => 'User', 'records' => true, 'connection' => 'test');
}

所有灯具看起来都是这样(唯一的区别是有时记录设置为真)然后在我的 UserTest.php(model) 中使用它:

class UserTest extends CakeTestCase {
public $fixtures = array('app.user', 'app.user_role','app.session', 'app.users_activity', 'app.user_role_history'
);
public $autoFixtures = false;
public function setUp() {
parent::setUp();


$this->loadFixtures('User','UserRoleHistory','Session','UserRole','UsersActivity');
));

我在尝试做一些测试时得到了什么我的 PDO 错误和堆栈跟踪,可能是我调用了某事的错误方式?猜想这是我如何制作灯具的问题但不知道..感谢您的想法!

编辑:我的问题有点变化,有错误和堆栈跟踪:

PDOException: SQLSTATE[23503]: Foreign key violation: 7 BŁĄD: modyfikacja lub usunięcie     na tabeli "users" narusza klucz obcy "user_role_history_user_id" tabeli "user_role_history"      DETAIL: Klucz (id)=(26381) ma wciąż odwołanie w tabeli "user_role_history".
Test case: UserTest(testUserNameExists)
Stack trace:
C:\Program Files (x86)\PostgreSQL\EnterpriseDB- ApachePHP\apache\www\soig\www\konkursy2.0\lib\Cake\Model\Datasource\DboSource.php : 436
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\lib\Cake\Model\Datasource\DboSource.php : 403
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\lib\Cake\Model\Datasource\Database\Postgres.php : 309
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\lib\Cake\TestSuite\Fixture\CakeTestFixture.php : 232
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\lib\Cake\TestSuite\Fixture\CakeFixtureManager.php : 236
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\lib\Cake\TestSuite\CakeTestCase.php : 191
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\app\Test\Case\Model\UserTest.php : 16
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\vendors\PHPUnit\Framework\TestCase.php : 801
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\soig\www\konkursy2.0\app\webroot\test.php : 92

我得到的也是

 Fatal Error (256): [PDOException] You cannot serialize or unserialize PDOStatement  instances
#0 [internal function]: PDOStatement->__sleep()
etc ;/

我看到第一个问题是关于外键的,当测试用于删除表用户时存在外键违规,但它是关于如何创建数据库的问题吗?

最佳答案

您从“测试”数据源导入,在您的固定装置中删除它。它从默认情况下提取,或者如果您愿意,可以指定另一个从中提取。它将在“测试”中创建而不是从中导入

关于unit-testing - cakePHP 中的固定装置名称(测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com