在重构我的代码库时,我发现了一段代码,我想将其提取到一个单独的类中。
它将为用户个人资料图片提供缩略图。该类(我们将其命名为UserImageManager
)将包含 的实例UserMapper
和 的实例 ImageRenderer
。
现在我确实有一种方法可以检索用户个人资料图片的缓存 url。该方法从 中检索一个User
对象,并使用存储在该对象中的图像路径UserMapper
触发该render
方法 。ImageRenderer
User
我为这个小函数编写了一个测试,模拟了这个测试用例ImageRenderer
,现在我没有一个断言。断言函数的返回值没有任何意义,因为它返回缓存文件路径,该路径由模拟的ImageRenderer
.
现在我的问题是:即使没有断言,它仍然是有效的单元测试吗?或者我应该如何重写我的测试,而不仅仅是检查对模拟对象的调用?
// The unit test
public function renderImageWillReturnCacheImagePath() {
$this->_userImageManager->setImage(
// Returns the ImageRenderer mock
$this->_getImageMock(BASE_PATH . 'uploads/2012-06-06-wegmeister-91792.png', false, false)
);
// Invokes the function
$image = $this->_userImageManager->render('wegmeister');
}
// The method to be tested
public function render($username, $width = false, $height = false) {
$user = $this->_userMapper->getUserByUsername($username);
if($user !== false && trim($user->getImage()) !== '') {
$srcImage = $this->_folderUserImages . $user->getImage();
}
else {
$srcImage = $this->_placeholderUserImage;
}
$dstImage = $this->_image->render($srcImage, 'jpg', $width, $height);
if ($dstImage === false || empty($dstImage)) {
throw new UnexpectedValueException('ImageRenderingFailed');
}
return $dstImage;
}