Php 测试控制器=集成测试?

Php 测试控制器=集成测试?,php,unit-testing,controller,integration-testing,Php,Unit Testing,Controller,Integration Testing,我曾经问过一个类似的问题。我们有一个论坛系统: class ForumThread { public function delete ($threadId) { Container::getPost()->deletePostsByThreadId ($threadId); Container::getSql()->sql ('DELETE FROM threads WHERE ID = '.$threadId); } } c

我曾经问过一个类似的问题。我们有一个论坛系统:

class ForumThread
{
    public function delete ($threadId)
    {
        Container::getPost()->deletePostsByThreadId ($threadId);
        Container::getSql()->sql ('DELETE FROM threads WHERE ID = '.$threadId);
    }
}

class Post
{
    public function deletePostsByThreadId ($threadId)
    {
        Container::getSql()->sql ('DELETE FROM posts WHERE THREAD_ID = '.$threadId);
    }
}
正如你所看到的,它从一个容器中获取帖子和线程对象,它可以被替换、模拟等等。当进行单元测试时,我感觉缺少了一些东西:所以,测试论坛线程是否被删除是可以的,所以也可以发帖子。这就是单元测试的目的-但是它们一起工作吗?如果它们单独工作正常,就不能保证它们能很好地协同工作。如果两个乐高元素制作得很好,它们可能不适合彼此。 在此处输入集成测试:

class Controller
{
    function controllerDelete()
    {
        Container::getForumThread()->delete ($_POST['ID']);
    }
}
我想在这里我可以检查两个SQL表。我的理论正确吗?因为如果控制器测试像unittest一样,那就没有意义了,因为控制器通常是最短的类(一旦我对UMThread::delete进行了测试,测试控制器::controllerDelete将与您已经知道的一样,主要集中在应用程序的最小可测试部分。因此,如果它们通过测试,您的单元级别就可以了。这是另一件事——模块作为一个组进行组合和测试。因此,底线是:

我的理论正确吗

是的。在这一级别的控制器测试中,您需要涵盖的是您已经按照应用程序设计和要求放置的功能、性能和可靠性