Actimele
Actimele

Reputation: 486

Yii CAssetManager.basePath is invalid on PHPUnit test

i have a problem to run test. My model use extension Yii mail and then i run test its fail with wrong assert path. Another test runs finaly (model dont use any extensions). Preloading is only log.

Upvotes: 0

Views: 682

Answers (3)

topher
topher

Reputation: 14860

I had a similar error and I explicitly set the basePath in config/test.php.

'components'=>array(
    ...
    'assetManager'=>array(
        'basePath'=>dirname(__FILE__).'/../../assets',
    )
)

Upvotes: 2

lubosdz
lubosdz

Reputation: 4500

PhpUnit runs primary in CLI mode and therefore some of environmental variables are missing. Yii's AssetManager uses one of such variable to determine webroot and since the variable does not exist, it will either throw error or set up invalid assets path on first attempt.

In my opinion, this issue is (indirectly) caused by PHPUnit because it only supports CLI testing mode, which makes some things really more difficult to test than it would be in HTTP request mode. Some guys therefore wrote tools to run unit tests via standard web GUI with whole native HTTP environment (e.g. https://github.com/NSinopoli/VisualPHPUnit). Eventually, you may use HTTP clients like Selenium to run your tests as if clicking over the page (see http://phpunit.de/manual/3.7/en/selenium.html).

Nevertheless, it's a matter of subjective opinion - somebody may argue, that testing in CLI mode has advantages, some guys will hate it. But the fact is, that one has to bear in mind differences between HTTP and CLI mode.

Upvotes: 0

Actimele
Actimele

Reputation: 486

Im solved problem

  public function setUp(){
        Yii::app()->assetManager->basePath = '../../asserts';
    }

Im dont know why this error throw only in one model...

Upvotes: 1

Related Questions