1

状況は次のとおり
です。データソースを使用するモデルのテスト ケースを作成しようとしています。データソースは API に接続します。

私が試したこと:フィクスチャの var をデータソース
に設定しようとしました。$useDbConfig

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

もう少しいじって、これを機能させることができました。フィクスチャは使用しませんが、仕事は完了します。モデルテストファイルで行ったことは次のとおりです。

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 に答える