首页 > 解决方案 > UnitTest - 检查方法的行为或结果?

问题描述

我是 UnitTests 的新手,有时不确定我的 UnitTest 应该测试什么。

下面是一个非常简化的例子

class MappingHelper
{
   private $mappingRepository;
   public function __construct(MappingRepository $mappingRepository)
   {
      $this->$mappingRepository = $mappingRepository
   }

  public function getMappingForCode(string $code)
  {
     return $this->mappingRepository->getMappingForCode($code);
  } 
}

所以这基本上只是一个包装方法。我应该检查行为还是方法的结果?

结果
这将是更多的努力,而且在某种程度上也是多余的,因为我已经在 UnitTest 中测试了 MappingRepository 本身的功能。

行为对我来说,只检查 $this->mappingRepository 的方法 'getValueForCode' 是否使用参数 $code 调用一次
似乎更有用。

这个解决方案的一个问题是依赖是最终的并且没有接口,所以我不能模拟它,因此没有机会检查该方法是否被调用。

当然我可以删除决赛,但我不希望课程被扩展。也不需要接口,因为不会有其他实现。

所以我会做这个改变只是为了能够创建单元测试,这在某种程度上感觉不对。

标签: phpphpunit

解决方案


推荐阅读