情况如下:
我正在尝试为使用数据源的模型创建测试用例。数据源连接到API。
我尝试了什么:
我尝试将fixture的$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()
以前有人试过这样做吗?我一直在网上搜索,但似乎找不到任何类似的资源。
答案 0 :(得分: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中使用我想要的数据源。
我现在可以使用此设置运行我的测试。如果有人通过灯具成功地做到了这一点,那么你的帮助将会非常感激。
答案 1 :(得分:0)
我使其工作的唯一方法是使用名为
的连接test_(实际模型使用的连接名称)
例如,在我的情况下,模型ActivePermission
使用连接登录,因此,对于我使用的夹具:
public $useDbConfig = 'test_login';
此外,如果您没有明确设置$useDbConfig
,蛋糕的默认设置是使用测试连接。