我使用一个简单的夹具来填充测试数据库中的表。但是当我尝试加载它时,检查完整性代码会抛出异常“表未找到:[]”。
我的固定装置:
<?php
namespace tests\unit\fixtures;
use yii\test\ActiveFixture;
class IdentityDocumentFixture extends ActiveFixture
{
public $modelClass = 'backend\modules\persons\models\IdentityDocument';
}
要加载fixture,我使用@app/tests:yii fixture/load IdentityDocument的以下命令
C:\php-projects\ais\tests\codeception\bin>yii fixture/load IdentityDocument
Fixtures namespace is:
tests\unit\fixtures
Global fixtures will be used:
1. yii\test\InitDb
Fixtures below will be loaded:
1. IdentityDocument
Load above fixtures? (yes|no) [no]:yes
因此,我收到以下错误消息:
异常“yii\base\InvalidParamException”,在C:\php projects\ais\vendor\yiisoft\yii2\db\mssql\QueryBuilder中显示消息“未找到表:[]”。菲律宾比索:180
堆栈跟踪:
0 C:\php projects\ais\vendor\yiisoft\yii2\db\Command。php(753):yii\db\mssql\QueryBuilder-
如何装载夹具?测试数据库存在,数据源配置正确。
[更新]
表的真实名称是
tbl_identitydocument
:
CREATE TABLE [dbo].[tbl_identitydocument](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](100) NOT NULL,
[FISID] [int] NULL,
CONSTRAINT [PK_tbl_identitydocument] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
以下是模型
IdentityDocument
的方法tableName()
:
public static function tableName()
{
return '{{%identitydocument}}';
}
模型代码完全:
<?php
namespace backend\modules\persons\models;
use Yii;
use backend\modules\persons\Module;
/**
* This is the model class for table "{{%identitydocument}}".
*
* @property integer $ID
* @property string $Name
* @property integer $FISID
*/
class IdentityDocument extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return '{{%identitydocument}}';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['Name'], 'required'],
[['Name'], 'string'],
[['FISID'], 'integer']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'ID' => Module::t('ML', 'ID'),
'Name' => Module::t('ML', 'Name'),
'FISID' => Module::t('ML', 'FISID'),
];
}
}
在调试器下,我可以看到方法
IdentityDocument::tableName()
返回:
$tableNameTmp = IdentityDocument::tableName();
我看到
$tableNameTmp
等于{{{%identitydocument}
(逐字,返回此字符串)
[更新]
在调试器下,我可以看到以下内容。在类
TestCase中。php
有一个方法setUp()
:
/**
* @inheritdoc
*/
protected function setUp()
{
parent::setUp();
$this->mockApplication();
$this->unloadFixtures();
$this->loadFixtures();
}
在此处引发异常:
$this-
在屏幕截图中可以看到
initScript
引用了路径@app/tests/fixtures/initdb。php
但是没有这样的文件。。另外,schemas
数组包含单个元素“
”。
[更新]
我在这里使用了@slinstj编写的指令-Run
fixture/load User
无法加载用户数据。在我的本地项目(高级模式和MySQL rdbms)中,夹具已成功加载:
'components' => [
'db' => [
'class' => '\yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => 'tbl_', // <<<<<<<<
],
],
来自文档的更多信息:
$tablePrefix
:
表名的通用前缀或后缀。如果表名为{{%TableName}},则百分比字符%将替换为此属性值。例如,{{%post}}变成了{{tbl_post}}。
据此:
// In your IdentityDocumentFixture, set this:
public $dataFile = __DIR__ . '/path/to/your/data-file.php';
我想加载(要求)一个包含json模式的文件夹,这些模式具有基于其文件的引用。 换句话说,我有 并在同一文件夹中的另一个文件中: 这些模式在sperate文件中,现在应该加载到JS中,以便针对json对象进行验证。但是,文件夹内的引用应该仍然有效。 这就是为什么我的问题是,是否以及如何能够加载一个装满json文件的文件夹,而不需要中断引用。 这个库将使用这些模式来验证json对象:https://g
我决定上传几个图像文件使用文件输入小部件 控制员/行动 模型 这是印刷品 后果 结果是数组中只有最后一个文件。如果我不使用这个小部件,那么一切都是正常加载的数组。 如何加载和处理一组照片?
问题内容: 我的项目具有以下结构: 我有一个文件,我想从单元测试中加载文件 我有此代码不起作用。它抱怨“没有这样的文件或目录”。 我也试过了 这也不起作用。它返回。我正在使用Maven构建我的项目。 问题答案: 尝试下一个: 如果上述方法不起作用,则已在以下类中添加了各种项目:1(代码在此处)。 以下是有关如何使用该类的一些示例:
问题内容: 有人可以为我提供导入整个模块目录的好方法吗? 我有这样的结构: 我尝试通过添加和执行操作将其转换为程序包,但它没有按我希望的方式工作。 问题答案: 列出当前文件夹中的所有文件,并将它们作为变量放入
我正在使用SpringBoot和thymeleaf从html模板生成文档。 随着模板的不断变化,我希望ti从外部加载模板,只是从外部添加或删除模板,而不是重新部署应用程序。 作为POC,使用/resources文件夹时效果良好。 这就是错误: 解析模板“凭证”时出错,该模板可能不存在,或者任何已配置的模板解析程序都无法访问该模板 这就是背景: applycation.yml 这是我的方法:其中te
我有两个jar文件。第一个只包含接口 在请求的基础上,我试图从中加载我的实现类。jar文件存在于某个文件夹中,在运行时使用URLClassLoader。 课程正在加载 我确信这是由于我使用不同的类加载器来加载类,但是我如何克服类之间的兼容性问题。 同样的代码可以在正常的J2SE环境中工作,但不能在JBoss环境中工作。 如果我的查询不清楚,请让我知道我也可以粘贴源代码。