小工厂是不是很好的做法?

时间:2017-10-24 06:51:44

标签: php unit-testing factory

我创建了

namespace factories;

use Upload\File;
use Upload\Storage\FileSystem;

class FileFactory
{
    private $fileSystem;

    public function __construct(FileSystem $fileSystem)
    {
        $this->fileSystem = $fileSystem;
    }

    public function create()
    {
        return new File('file', $this->fileSystem);
    }
}

文件对象来自此https://packagist.org/packages/codeguy/upload库。

我想测试使用File的代码,并希望模拟getMimeType。

让我们说我想测试我的函数在这段代码中抛出异常:

$file = $this->fileFactory->create();

        $mimeType = $file->getMimetype();

        if (!in_array($mimeType, ['image/png', 'image/jpeg', 'image/jpg'])) {
            throw new ValidationException('File type is not supported. Use png, jpg.');
        }

所以我会模拟fileFactory,它重新模拟了File。

它会起作用。但这样好吗?我的同事认为使用这些工厂时有太多的抽象。

另一种选择是只在$ _FILES数组中设置数据,而不是模拟File对象。使用新关键字创建它。

哪个更好?

0 个答案:

没有答案