2010-09-15 122 views
1

我正在開發一個Magento 1.4.1項目,並且我想使用PhpUnit來測試我的模型。如何在運行中更改PhpUnit測試的數據庫連接

我能夠使用默認連接運行我的PhpUnit測試,但我想使用與我用於測試接口的數據庫不同的連接。

我想知道(如果可能)什麼:

  1. 有沒有一種方法來選擇我的模型不同 連接之前,我 跑了所有的考試;
  2. 可我只是在我的local.xml中添加 的連接,如 這樣:

    <phpunit_setup> 
         <connection> 
          <host><![CDATA[localhost]]></host> 
          <username><![CDATA[username]]></username> 
          <password><![CDATA[password]]></password> 
          <dbname><![CDATA[dbname]]></dbname> 
          <active>1</active> 
         </connection> 
        </phpunit_setup> 
    

    如果是的話,我怎麼訪問它。

謝謝。

回答

2

也許還有另外一種解決方案,但是我發現當我們打開應用程序時我們可以改變「etc_dir」。

  1. 我複製了「app/etc/local.xml」和「app/etc/config.xml」到一個新創建的文件夾「tests/etc /」;
  2. 我改變了這個數據庫配置到我需要的;
  3. 我在「tests/etc /」中做了一個符號鏈接,指向「app/etc/modules」(不推薦使用副本);
  4. 最後,我將默認參數和「etc_dir」傳遞給文件「tests/helper.php」中的「Mage :: app()」方法,該文件被執行以設置我的測試(包括路徑,代碼白名單覆蓋)。

它看起來像這樣。

「測試/ helper.php」

... 
// Start Magento application 
Mage::app(); 
... 

之前之後 「測試/ helper.php」

... 
// Start Magento application 
Mage::app('default', 'store', '/path/to/test/etc'); 
... 

我的app文件夾

alt text

我的測試文件夾

alt text

希望這可以幫助某人。

1

您可以直接創建自己的local.xml中,例如:

<?xml version="1.0"?> 
<config> 
    <global> 
     <resources> 
      <default_setup> 
       <connection> 
        <host><![CDATA[localhost]]></host> 
        <username><![CDATA[root]]></username> 
        <password></password> 
        <dbname><![CDATA[magento_test]]></dbname> 
        <active>1</active> 
       </connection> 
      </default_setup> 
     </resources> 
    </global> 
</config> 

而且在應用它的TestCase的setUp方法有:

$test_config = new Mage_Core_Model_Config('test/local.xml'); 
Mage::getConfig()->extend($test_config);