phpunit,在yii1中使用其他fixture
Posted
技术标签:
【中文标题】phpunit,在yii1中使用其他fixture【英文标题】:phpunit, use other fixture in yii1 【发布时间】:2016-06-10 07:13:31 【问题描述】:我在手册中找到了如何使用固定装置的示例
class CommentTest extends CDbTestCase
public $fixtures=array(
'posts'=>'Post',
'comments'=>'Comment',
);
…
或者我可以像这样使用'post' => ':post'。 但我想在其他测试中使用其他夹具,例如:当我测试模型 Post 时我使用“post.php”夹具,当我测试模型作者时我想使用 post_for_author.php(数据必须插入表 post 中)
我试着这样写:
class CommentTest extends CDbTestCase
public $fixtures=array(
'posts_for_author'=>'Post',
'comments'=>'Comment',
);
…
和其他方式 'posts_for_author'=>':post', 但它不起作用。请帮帮我,怎么办?
【问题讨论】:
【参考方案1】:像这样使用独立的固定装置。
应用程序/测试/单元:
class CommentTest extends IsolatedFixtureDbTestCase
public $fixtures=array(
'posts_for_author'=>'Post',
'comments'=>'Comment',
);
...
和
应用程序/测试:
abstract class IsolatedFixtureDbTestCase extends CDbTestCase
private $basePathOld = null;
public function setUp()
$fixturePath = Yii::getPathOfAlias('application.tests.fixtures.' . get_class($this));
if (is_dir($fixturePath))
$this->basePathOld = $this->getFixtureManager()->basePath;
$this->getFixtureManager()->basePath = $fixturePath;
parent::setUp();
public function tearDown()
parent::tearDown();
if (null !== $this->basePathOld)
$this->getFixtureManager()->basePath = $this->basePathOld;
然后在 application/tests/fixtures 中,您可以创建文件夹 CommentTest 并在其中创建此类的fixture
【讨论】:
以上是关于phpunit,在yii1中使用其他fixture的主要内容,如果未能解决你的问题,请参考以下文章
如果重写setUp和tearDown,则不会调用PHP,phpunit和dbunit - getConnection和getDataSet
使用 Webgrind 或其他 PHP 分析工具分析 PHPUnit 测试的方法?
如果其他模块需要,根 composer 文件中是不是需要 phpunit?