首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii灯具问题?

Yii灯具问题?
EN

Stack Overflow用户
提问于 2012-03-27 17:39:41
回答 5查看 2K关注 0票数 3

我好像对Yii的固定装置有点问题。问题似乎是这样的:

代码语言:javascript
复制
public $fixtures=array('projects'=>'Project'); 

模型项目存在,我在测试的fixtures文件夹中有一个名为tbl_project.php的fixtures文件,我的表名为tbl_project。fixtures文件中包含以下内容。

代码语言:javascript
复制
return array(
        'project1' => array(
            'name' => 'Test Project 1',
            'description' => 'This is test project 1',
            'create_time' => '',
            'create_user_id' => '',
            'update_time' => '',
            'update_user_id' => '',
         ),
        'project2' => array(
            'name' => 'Test Project 2',
            'description' => 'This is test project 2',
            'create_time' => '',
            'create_user_id' => '',
            'update_time' => '',
            'update_user_id' => '',
         ),
        'project3' => array(
            'name' => 'Test Project 3',
            'description' => 'This is test project 3',
            'create_time' => '',
            'create_user_id' => '',
            'update_time' => '',
            'update_user_id' => '',
         ),
    );       

这实际上出自“使用Yii进行敏捷Web应用程序开发”一书。当我运行测试用例时,我得到以下内容,但没有测试结果信息。

代码语言:javascript
复制
PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from ETC/protected/tests/phpunit.xml

如果我从顶部移除fixtures数组,我会得到以下结果。

代码语言:javascript
复制
Time: 0 seconds, Memory: 9.25Mb

There was 1 error:

1) ProjectTest::testRead
Exception: Unknown method 'projects' for class 'ProjectTest'. 

这显然是有道理的。我不知道我做错了什么。

EN

回答 5

Stack Overflow用户

发布于 2012-12-02 04:17:41

  1. 确保测试类如下所示的

代码语言:javascript
复制
    class ProjectTest extends CDbTestCase{

    protected $fixtures = array(
                'projects' => 'Project',
            );

    public function testRead(){

        $receivedProject = $this->projects('Project1');
        $this->assertTrue($receivedProject instanceof Project);
        $this->assertEquals($receivedProject->name,'test 1');
    }
    ...`

  1. 检查protected/config/test.php中的装置配置...应该看起来像...

代码语言:javascript
复制
    ...
    'components'=>array(
            'fixture'=>array(
                'class'=>'system.test.CDbFixtureManager',
            ),
                        'db'=>array(
                            'connectionString' =>'mysql:host=localhost;dbname=your_db_name',
                            'emulatePrepare' => true,
                            'username' => 'username',
                            'password' => 'passwd',
                            'charset' => 'utf8',
                        ),
    ....

  1. 最终会检查fixture文件的权限,确保该文件可以被

读取

票数 4
EN

Stack Overflow用户

发布于 2013-12-25 16:31:08

还要确保在您自己的setUp()中调用父级setUp()方法

代码语言:javascript
复制
class SomeTest extends CDbTestCase {

    public $fixtures = array(
        'somes' => 'Some',
    );

    protected function setUp() {
        parent::setUp();
        // your code....
    }

    // your tests .......................

}
票数 3
EN

Stack Overflow用户

发布于 2012-05-27 07:32:45

你的测试类是从CDbTestCase而不是CTestCase派生的吗?

您的测试类应该如下所示:

代码语言:javascript
复制
class ProjectTest extends CDbTestCase{

protected $fixtures = array(
            'projects' => 'Project',
        );

public function testRead(){

    $receivedProject = $this->projects('Project1');
    $this->assertTrue($receivedProject instanceof Project);
    $this->assertEquals($receivedProject->name,'test 1');
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9886947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档