Php 服务的功能测试

Php 服务的功能测试,php,unit-testing,service,phpunit,Php,Unit Testing,Service,Phpunit,我在测试应用程序中的一些简单服务时遇到问题。这是我的服务方式: public function createNewCourse($details = array()) { $course = new Course($details); $this->persistenceManager->save($course); } 基本上,我向这个服务发送一个数组,创建$course对象,它设置对象的属性。之后,我调用persistenceMa

我在测试应用程序中的一些简单服务时遇到问题。这是我的服务方式:

public function createNewCourse($details = array())
    {
        $course = new Course($details);
        $this->persistenceManager->save($course);
    }

基本上,我向这个服务发送一个数组,创建$course对象,它设置对象的属性。之后,我调用persistenceManager,它基本上有一个save方法,将对象插入数据库。无论如何,关于如何在不实际测试持久性的情况下测试此方法的任何提示,因为这将是另一个测试。

如果
persistanceManager
是,那么您可以创建一个在测试中表示它的方法

如果不是,那么单元测试将非常困难,您应该重构代码以使用依赖注入

别担心,依赖注入只是一个相当简单的概念的花哨短语


单元测试课程对象时也会遇到类似的问题。

如果
persistencemanager
为,则可以创建一个用于在测试中表示它的

如果不是,那么单元测试将非常困难,您应该重构代码以使用依赖注入

别担心,依赖注入只是一个相当简单的概念的花哨短语


单元测试Course对象时也会遇到类似的问题。

使用存根persistenceManager并将其提供给包含createNewCourse方法的类。存根应如下所示:

class StubPersistenceManager
{
    private $course;
    public function save($course)
    {
         $this->course = $course;
    }
    public function getCourse()
    {
         return $this->course;
    }
}
确保在包含createNewCourse方法的类中插入此存根的实例作为$this->persistenceManager


在测试中,您调用createNewCourse方法,然后可以使用存根的getCourse函数获取提供给持久性管理器的课程实例。

使用存根持久性管理器,并将其提供给包含createNewCourse方法的类。存根应如下所示:

class StubPersistenceManager
{
    private $course;
    public function save($course)
    {
         $this->course = $course;
    }
    public function getCourse()
    {
         return $this->course;
    }
}
确保在包含createNewCourse方法的类中插入此存根的实例作为$this->persistenceManager


在测试中,您调用createNewCourse方法,然后可以使用存根的getCourse函数获取提供给持久性管理器的课程实例。

这不是“单元”测试,因为您没有测试“单元”(方法),这是一个功能测试,当您正在测试服务的功能以及服务之间的一切时。但这只是一句废话:这不是一个“单元”测试,因为你不是在测试“单元”(方法),这是一个功能测试,因为你在测试你的服务的功能以及它们之间的一切。但那只是一句咆哮:D