在PHPUnit中重用数据集

时间:2012-08-20 01:58:45

标签: php unit-testing zend-framework phpunit

我有一个带有属性1,属性2和属性3的用户对象。我有一个单独的函数来编辑每个属性。因此,我需要测试每个编辑属性函数。因此,我将为成功的属性编辑测试创建3个不同的预期数据集。但是,如果我最终添加第4个属性怎么办呢?这不会强迫我现在将此属性/值添加到所有其他数据集中吗?我应该只创建1个模板数据集文件,然后从文件中提取数据并使用php数组集吗?这样,如果我添加一个新属性,我将不必修改所有以前的数据集?

具体例子:

假设我想测试我的编辑电子邮件功能是否正常运行,并且只更改了电子邮件。我的设置夹具将是:

设置-fixture.xml:

<dataset>
    <table name="users">
        <column>id</column>
        <column>email</column>
        <column>password</column>
        <row>
            <value>1</value>
            <value>user1@email.com</value>
            <value>password</value>
        </row>
    </table>
</dataset>

我的预期数据集是:

编辑电子邮件预期-dataset.xml:

<dataset>
    <table name="users">
        <column>id</column>
        <column>email</column>
        <column>password</column>
        <row>
            <value>1</value>
            <value>user1-changed-his-email@email.com</value>
            <value>password</value>
        </row>
    </table>
</dataset>

但是,如果我后来为此用户对象添加了另一个名为“notes”的属性,我的设置夹具现在将是: 新设置-fixture.xml:

<dataset>
    <table name="users">
        <column>id</column>
        <column>email</column>
        <column>password</column>
        <column>notes</column>
        <row>
            <value>1</value>
            <value>user1@email.com</value>
            <value>password</value>
            <value>notes</value>
        </row>
    </table>
</dataset>

因此,我还必须在编辑电子邮件功能测试中修改我的预期数据集文件,以包含这个新的“notes”属性。

编辑电子邮件预期-dataset.xml:

<dataset>
    <table name="users">
        <column>id</column>
        <column>email</column>
        <column>password</column>
        <column>notes</column>
        <row>
            <value>1</value>
            <value>user1-changed-his-email@email.com</value>
            <value>password</value>
            <value>notes</value>
        </row>
    </table>
</dataset>

我的问题是,每次添加额外字段时,如何避免编辑所有预期的数据集?

0 个答案:

没有答案