如何针对SUT的不同实现运行完全相同的phpunit测试?

时间:2017-04-16 17:36:37

标签: php phpunit tdd ioc-container

我无法绕过这个测试问题。

我为测试存储库编写了一个测试,该存储库使用内存实现,如:

class RepositoryTest extends TestCase {

    function setUp() {
        // set implementation in the container
        container()->set(Repository::class, InMemoryRepository::class);
    }

    function test_it_can_save() {...}
    function test_it_can_delete() {...}
    function test_it_can_query() {...}
}

然后我为此存储库添加了另一个实现。我们说它是SQLRepository。 我需要针对我的新实现运行完全相同的测试集。 我想为相同的测试设置另一个上下文。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

好的,我想我知道该怎么做。

我只需要扩展我的初始测试并重新加载setUp方法,如下所示:

class SQLRepositoryTest extends RepositoryTest {
    function setUp() {
        // set another implementation in the container
        container()->set(Repository::class, SQLRepository::class);
    }
}