热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

正确的单元测试

如何解决《正确的单元测试》经验,请问有什么解决方案?

我开始在这个项目中使用单元和功能测试,因此我有一些问题:

我正在使用symfony php框架.我有像LDAP ORM服务这样的学说.

此外,我有一个用户存储库(作为服务),它依赖于LDAP ORM服务,记录器和验证服务.

现在我想为UserRepo的addUser函数编写单元测试.它将在内部调用:getNewUidNumber,userToEntities,doUserExist和getUserByUid.

我的问题是:我是否应该模拟所有这些内部函数来测试addUser函数?这是否违背了单元测试的想法(只是测试API).

或者我应该只是模拟LDAP ORM服务,Logger和验证服务,以便该类调用所有内部函数?但是这会导致巨大的测试功能,并且需要进行大量的模拟,因为我必须模拟所有内部存储库调用的存储库.

或者我应该启动symfony内核并使用ServiceContainer将ORM LDAP服务与真实的测试数据库一起使用.但这不是功能测试而不是单元测试吗?我听说在测试中有这么多依赖项是不好的.所以我认为使用整个serviceContainer会很糟糕.

添加用户:

public function addUser(User $user)
{
    $pbnlAccount = $this->userToEntities($user);

    if(!$this->doesUserExist($user)) {
        $pbnlAccount->setUidNumber($this->getNewUidNumber());
        $this->ldapEntityManager->persist($pbnlAccount);
        $this->ldapEntityManager->flush();
    }
    else {
        throw new UserAlreadyExistException("The user ".$user->getUid()." already exists.");
    }

    return $this->getUserByUid($user->getUid());
}

有关更多代码,例如内部函数:https: //gist.github.com/NKPmedia/4a6ee55b6bb96e8af409debd98950678

谢谢保罗


推荐阅读
author-avatar
手机用户2602919763
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有