Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как протестировать модели в Yii 2? / 2 сообщений из 2, страница 1 из 1
10.06.2016, 11:42
    #39254125
Как протестировать модели в Yii 2?
Коллеги, приветствую.

Собственно, никак не удается разобраться в причинах этой ошибки "[yii\base\InvalidParamException] Table not found: []" . Существует некоторая таблица, не связанная с другими:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
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.php, для которой написан простой Unit- тест. Тест завершается ошибкой:

There was 1 error: [yii\base\InvalidParamException] Table not found: []

Вот простой дымовой тест, который я пытаюсь запустить:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?php
namespace tests\codeception\backend;

use tests\codeception\backend\unit\DbTestCase;
use backend\modules\persons\models\IdentityDocument;

class SmokeTest extends DbTestCase
{
    /**
     * @var IdentityDocument
     */
    protected $identityDocument;

    protected function _before()
    {
        $this->identityDocument = new IdentityDocument();
    }

    protected function _after() { }

    // tests
    public function testMe() { }
} 



Собственно, сама модель:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
<?php

namespace backend\modules\persons\models;

use Yii;

/**
 * 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'),
        ];
    }
}



Для теста использую отдельную базу данных той же структуры, что и промышленная.
...
Рейтинг: 0 / 0
10.06.2016, 16:07
    #39254349
Как протестировать модели в Yii 2?
Решено. Если в Unit- тесте не используются фикстуры, то нужно расширять класс TestCase вместо DbTestCase, иначе загрузчики фикстур будут вызывать ошибки. Если фикстуры используются, то нужно наследоваться от DbTestCase.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как протестировать модели в Yii 2? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]