1

情况如下:
我正在尝试为使用数据源的模型创建测试用例。数据源连接到 API。

我尝试了什么:
我尝试$useDbConfig像这样将夹具的 var 设置为数据源。

class ProjectFixture extends CakeTestFixture {
    public $useDbConfig = 'project';
    public $useTable = false;
}

然后在我的模型测试中,这就是我所做的:

App::uses('Project', 'Model');

class ProjectTest extends CakeTestCase {
    public $fixtures = array('app.project');

    public function setUp() {
        parent::setUp();
        $this->Project = ClassRegistry::init('Project');
    }
...

但是,当我运行测试时,我收到此错误消息:

Invalid datasource project for object Project
Error: An Internal Error Has Occurred.

Stack Trace
CORE/Cake/TestSuite/Fixture/CakeFixtureManager.php line 144 → CakeTestFixture->__construct()
CORE/Cake/TestSuite/Fixture/CakeFixtureManager.php line 78 → CakeFixtureManager->_loadFixtures(array)
CORE/Cake/TestSuite/CakeTestRunner.php line 52 → CakeFixtureManager->fixturize(ProjectTest)
CORE/Cake/TestSuite/CakeTestSuiteCommand.php line 111 → CakeTestRunner->doRun(PHPUnit_Framework_TestSuite, array)
CORE/Cake/TestSuite/CakeTestSuiteDispatcher.php line 242 → CakeTestSuiteCommand->run(array)
CORE/Cake/TestSuite/CakeTestSuiteDispatcher.php line 99 → CakeTestSuiteDispatcher->_runTestCase()
CORE/Cake/TestSuite/CakeTestSuiteDispatcher.php line 116 → CakeTestSuiteDispatcher->dispatch()
APP/webroot/test.php line 92 → CakeTestSuiteDispatcher::run()

有没有人尝试过这样做?我一直在网上搜索,但似乎找不到任何类似的资源。

4

2 回答 2

1

多一点修补,我就能让它工作。它不使用 Fixtures,但可以完成工作。这是我对模型测试文件所做的:

App::uses('Project', 'Model');

class ProjectTest extends CakeTestCase {
    public function setUp() {
        parent::setUp();
        $this->Project = ClassRegistry::init('Project');
        $this->Project->useDbConfig = 'project';
    }
...

我只是强制模型在 setUp 中使用我想要的数据源。

我现在可以使用此设置运行我的测试。不过,如果有人通过固定装置成功地做到了这一点,您的帮助将不胜感激。

于 2012-10-02T05:11:47.057 回答
0

我使它工作的唯一方法是使用一个名为:

test_(实际模型使用的连接名称)

例如,在我的情况下,模型ActivePermission使用连接登录,因此,对于我使用的夹具:

public $useDbConfig = 'test_login';

此外,如果您没有明确设置$useDbConfigcake 的默认值,则使用测试连接。

于 2014-11-26T12:14:52.897 回答