php - 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 调用一次
似乎更有用。
这个解决方案的一个问题是依赖是最终的并且没有接口,所以我不能模拟它,因此没有机会检查该方法是否被调用。
当然我可以删除决赛,但我不希望课程被扩展。也不需要接口,因为不会有其他实现。
所以我会做这个改变只是为了能够创建单元测试,这在某种程度上感觉不对。
解决方案
推荐阅读
- c - MS VSCode 没有显示任何错误
- unit-testing - 我以完全相同的方式模拟两个函数。在一种情况下返回模拟值,在另一种情况下调用真实函数。为什么?
- ruby-on-rails - 删除数据库中的行,其中 id 包含在 Ruby 中的数组中
- spring - 如何在没有 Spring Boot 的情况下使用 Spring Security 设置 ForwardedHeaderFilter 进行登录?
- java - 从spring boot中以角度获取json
- java - 相同数字的Java乘法在Python中返回不同的输出
- python - 如何使用“|” 与 os.system?
- javascript - 如何将 javascript 字符串数组减少为唯一值但保留重复次数?
- php - 如何仅在 Woocommerce 中输出特定产品的列表?
- python - 从另一个类更新标签