Yii Framework Forum: Ошибка С Фикстурами - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Ошибка С Фикстурами Не получается использовать фикстуры в модульном тестировании Rate Topic: -----

#1 User is offline   Extj 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 19-June 12

Posted 27 October 2012 - 04:26 AM

Добрый день. Помогите решить проблему - при модульном тестировании с использованием фикстур возникает следующая ошибка:
Exception : Unknown property 'posts' for class 'PostTest'.

protected/tests/unit/PostTest.php

class PostTest extends CDbTestCase
{
	public $fixtures=array('posts' => 'Post');

	public function testCreate()
	{
		/**
		 * @var Post $model
		 */
		$model = $this->posts['sample1'];

		$this->assertTrue($model->save(false));

		$post=Post::model()->findByPk($model->id);
		$this->assertTrue($post instanceof Post);
	}

}


protected/tests/fixtures/Post.php

return array(
	'sample1'=>array(
		'title'=>'Тестовый заголовок',
		'content'=>'Тестовый текст',
		'status' => 2,
		'author_id'=>1,
	),
);


В модели Post:

public function tableName()
{
	return 'tbl_post';
}


protected/config/test.php

array(
	'components'=>array(
		'fixture'=>array(
			'class'=>'system.test.CDbFixtureManager',
			'basePath'=>dirname(__FILE__).'/../tests/fixtures',
		), ...
         ),
)

0

#2 User is offline   Extj 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 19-June 12

Posted 27 October 2012 - 10:27 AM

Нашел решение:
Нужно изменить название файла в fixtures с названия модели (Post) на название таблицы (в моем случае - tbl_post).

Непонятно, почему в официальном руководстве написано по другому:

Quote

Далее мы сохраняем данные фикстуры в директории protected/tests/fixtures. Эта директория может быть настроена свойством CDbFixtureManager::basePath конфигурации приложения. Данные фикстур организованы как коллекция PHP-файлов, называемых файлами фикстур. Каждый файл фикстуры возвращает массив, представляющий начальные строки данных для конкретной таблицы. Имя файла - такое же, как название таблицы. Далее приведен пример данных фикстуры для таблицы Post, сохраненной в файле Post.php:

<?php
return array(
    'sample1'=>array(
        'title'=>'Тестовая запись 1',
        'content'=>'Содержимое тестовой записи 1',
        'createTime'=>1230952187,
        'authorId'=>1,
    ),
    'sample2'=>array(
        'title'=>'Тестовая запись 2',
        'content'=>'Содержимое тестовой записи 2',
        'createTime'=>1230952287,
        'authorId'=>1,
    ),
);

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users