3

我尝试使用 Selenium 为我的 Yii 应用程序运行测试。一个简单的测试,我打开入口页面并检查文本是否有效。

让我们看下面的测试片段:

class ItemTest extends WebTestCase
{
    public function testCreateItem()
    {
        $this->open('admin/item');
        $this->click("link=create item...");
              ...
    }
}

“admin”是我的应用程序中的一个模块。第一个函数 open() 正在工作。调用带有 index-test.php 的正确 url。

但是第二个函数 click() 以某种方式被路由到主 index.php 而不是 index-test.php。我想这与我的 url 管理器配置有关?

'urlManager'=>array(
    'urlFormat'=>'path',
'rules'=>array(
    ''=>'site/index',
    '<controller:\w+>/<id:\d+>'=>'<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    '<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<module>/<controller>/<action>',
    '<module:\w+>/<controller:\w+>/<action:\w+>'=>'<module>/<controller>/<action>',
),
'showScriptName'=>false,
),

如果你能给我一些建议,我会很高兴如何最好地处理这个问题。

4

1 回答 1

3

在您的 config/test.php 中,您必须告诉它显示脚本文件名(index-test.php):

return CMap::mergeArray(
    require(dirname(__FILE__).'/main.php'),
    array(
        'components'=>array(
            'fixture'=>array(
                'class'=>'system.test.CDbFixtureManager',
            ),
            /* uncomment the following to provide test database connection
            'db'=>array(
                'connectionString'=>'mysql:host=localhost;dbname=db-test',
            ),
            */
            'urlManager' => array(
                'showScriptName' => true,
            ),
        ),
    )
);
于 2013-03-22T12:50:16.283 回答