0

我无法测试我的应用程序中的一些简单服务。这是我的服务方法:

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

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

4

2 回答 2

3

如果作为依赖注入到您的对象中,persistanceManager那么您可以创建一个模拟对象来在您的测试中表示它。

如果不是,那么您将很难进行单元测试,您应该重构代码以使用依赖注入。

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

您将在对 Course 对象进行单元测试时遇到类似的问题。

于 2012-04-11T15:55:43.740 回答
0

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

class StubPersistenceManager
{
    private $course;
    public function save($course)
    {
         $this->course = $course;
    }
    public function getCourse()
    {
         return $this->course;
    }
}

确保在包含createNewCourse方法的类中将此存根的实例作为 $this->persistenceManager 注入。

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

于 2012-04-11T16:01:23.287 回答