单元测试适用于此吗?

时间:2016-04-19 08:42:27

标签: php unit-testing phpunit php-5.4

 public function addPic($loggedInId,$PicId){

        $chatCoverPhotoObj = new COVER_PHOTO();
        $out = $chatCoverPhotoObj->add($loggedInId,$PicId);

        if($out)
            return true;
        return false;
    }

上面的示例代码是用PHP编写的,简单的添加记录在表COVER_PHOTO中 记录:" picId"对应于由" loggedInId"。

标识的登录用户

我想知道我应该在这个函数的单元测试中写什么。 或者对于这样的功能,我们不应该编写单元测试。

请建议?

1 个答案:

答案 0 :(得分:0)

如果您的System- / Class Under Test正在使用任何基础设施问题 - 在您的情况下是数据库 - 通常是integration test

单元测试完全隔离,每个可能的依赖项都被模拟/存根。

我在您的代码中看到的第一个问题是您new()了解您的函数的依赖关系。通过这种方式,您无法轻松测试代码。

我建议你更好invert this dependency并在你的类的constructor中有一个接口,它可以接收该接口的具体实现。完成此操作后,您可以在测试中mock出数据库部分。但是,通过查看您在问题中分享的代码,我并不确定您将在此处测试行为

始终确保要测试的内容,在这种情况下,如持久性规范或映射配置(当然,如果您使用某种OR/M)。只检查持久性操作的返回值 - 这是成功或失败标志 - 不会增加很多商业价值来进行测试。