3

私は「yii1.1とphp5を使ったアジャイルWebアプリケーション開発」の本をフォローしていて、フィクスチャを使ったテストのセクションにいます。私は彼らのコードに従いましたが、フィクスチャにアクセスできません...

私はphpunitでテストを実行していますが、これが返されます

c:\wamp\www\agileBook\protected\tests>phpunit unit/ProjectTest.php
PHPUnit 3.6.11 by Sebastian Bergmann.

Configuration read from C:\wamp\www\agileBook\protected\tests\phpunit.xml

←[31;1mE←[0m

Time: 0 seconds, Memory: 5.75Mb

There was 1 error:

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

C:\wamp\yii\framework\test\CDbTestCase.php:63
C:\wamp\www\agileBook\protected\tests\unit\ProjectTest.php:11
C:\wamp\bin\php\php5.3.13\phpunit:46

←[37;41m←[2KFAILURES!
←[0m←[37;41m←[2KTests: 1, Assertions: 0, Errors: 1.
←[0m←[2K

どうすればそれを機能させることができますか?

ご協力ありがとうございました

私のフィクスチャ: C:\ wamp \ www \ agileBook \ protected \ tests \ Fixtures \ tbl_project.php

<?php 

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' =>'',
    ),

),

?>

私のプロジェクトテストクラス: C:\ wamp \ www \ agileBook \ protected \ tests \ unit \ ProjectTest.php

$ this-> projects('project1')(本から)を$ this-> projects ['project1']に変更しました。フォーラムの投稿で、プロジェクトは配列であり、メソッドではないことがわかりました。

<?php

class ProjectTest extends CDbTestCase{

    public $fixture = array('projects'=>'Project');

    public function testRead(){
    // READ the new project
        $receivedProject = $this->projects['project1'];
        $this->assertTrue($receivedProject instanceof Project);
        $this->assertEquals($receivedProject->name,'Test Project 1');

    }

}

?>

私のテスト構成: C:\ wamp \ www \ agileBook \ protected \ config \ test.php

<?php

return CMap::mergeArray(
require(dirname(__FILE__).'/main.php'),
array(
    'components'=>array(
        'fixture'=>array(
            'class'=>'system.test.CDbFixtureManager',
        ),
        'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=trackstar_test',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ),
    ),
)
);
4

2 に答える 2

1

前述のように、$fixtureは$fixturesに修正する必要があります。

私はこれについてコメントしたかっただけです:

$ this-> projects('project1')(本から)を$ this-> projects ['project1']に変更しました。フォーラムの投稿で、プロジェクトは配列であり、メソッドではないことがわかりました。

これを行うと、上記のテストは失敗します。Yiiドキュメントからの理由:

    // return all rows in the 'Comment' fixture table
    $comments = $this->comments; 
    // return the row whose alias is 'sample1' in the `Post` fixture table
    $post = $this->posts['sample1'];
    // return the AR instance representing the 'sample1' fixture data row
    $post = $this->posts('sample1');

http://www.yiiframework.com/doc/guide/1.1/en/test.unit

于 2013-11-08T08:04:38.810 に答える
0

エラーが見つかりました...

public $fixtures = array('projects'=>'Project'); 

フィクスチャには「S」が必要です

それが誰かを助けることを願っています

于 2012-07-30T00:48:02.680 に答える