如何为 PhpUnit 测试动态更改数据库连接

发布于 2024-09-18 22:51:10 字数 612 浏览 3 评论 0原文

我正在开发 Magento 1.4.1 项目,我想使用 PhpUnit 来测试我的模型。

我可以使用默认连接运行 PhpUnit 测试,但我想使用与测试接口不同的数据库连接。

我想知道(如果可能的话):

  1. 有没有办法选择不同的 在我之前连接我的模型 运行我所有的测试;
  2. 我可以添加一个 我的 local.xml 中的连接就像 这个:

     ;
            <连接>
                <主机>
                <用户名>
                <密码>
                <数据库名称>
                <活动>1
            
        
    

    如果是,我如何访问它。

谢谢。

I am working on a Magento 1.4.1 project, and I want to use PhpUnit to test my models.

I am able to run my PhpUnit test using the default connection, but I want to use a different database connection than the one I use to test the interface.

What I would like to know (if its possible):

  1. Is there a way to select a different
    connection for my models before I
    run all my tests;
  2. Can I just add a
    connection in my local.xml like
    this:

        <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>
    

    if yes, how do I access it.

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一抹淡然 2024-09-25 22:51:10

也许还有另一种解决方案,但我发现我们可以在启动应用程序时更改“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();
...

之后
"tests/helper.php"

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

我的应用程序文件夹

alt text

我的测试文件夹

alt text

希望这可以帮助别人。

Maybe there is another solution, but I found out that we can change the "etc_dir" when we lauch the application.

  1. I copied the "app/etc/local.xml" and "app/etc/config.xml" to a newly created folder "tests/etc/";
  2. I changed this database configuration to what I needed;
  3. I made a symbolic link in "tests/etc/" to point to "app/etc/modules" (A copy is not recommended);
  4. Finally I passed the defaults parameters and the "etc_dir" to the "Mage::app()" method in a file "tests/helper.php" that is executed to setup my tests (include path, white list for code coverage).

It looked like this.

Before
"tests/helper.php"

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

After
"tests/helper.php"

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

My app folder

alt text

My test folder

alt text

Hope this could help someone.

撞了怀 2024-09-25 22:51:10

您可以创建自己的 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);

You can just create your own local.xml, for example:

<?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>

And apply it in you testCase setUp method with:

$test_config = new Mage_Core_Model_Config('test/local.xml');
Mage::getConfig()->extend($test_config);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文