如何使UploadedFile对UnitTest无效?

时间:2015-10-21 12:22:13

标签: php unit-testing symfony laravel-5

我正在测试在Laravel 5.1项目中上传文件。

其中一个检查验证方法如下所示

//assuming $file is instance of UploadedFile class
if ( ! $file->isValid()) {
    /*add errors and return*/
}

我需要测试这张支票 问题是:如何创建 无效的 上传文件?
UploadedFile扩展Symfony\Component\HttpFoundation\File扩展SplFileInfo php class的类

1 个答案:

答案 0 :(得分:4)

我经常发现查看图书馆资源很有帮助:

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/File/UploadedFile.php

您可以看到func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { if annotation is MKUserLocation { return nil } let annotationIdentifier = "SomeCustomIdentifier" // use something unique that functionally identifies the type of pin var annotationView: MKAnnotationView! = mapView.dequeueReusableAnnotationViewWithIdentifier(annotationIdentifier) if annotationView != nil { annotationView.annotation = annotation } else { annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier) annotationView.image = UIImage(named: "pin maps.png") annotationView.canShowCallout = true annotationView.calloutOffset = CGPointMake(-8, 0) annotationView.autoresizesSubviews = true annotationView.rightCalloutAccessoryView = UIButton(type: UIButtonType.DetailDisclosure) as UIView } return annotationView } 方法检查isValid是否为默认值。

设置$this->error === UPLOAD_ERR_OK的唯一方法,因为它是一个私有变量,是通过构造函数设置的:

error

因此,在创建$ file对象时,只需确保将$ error设置为某些内容即可。这是所有可用的错误常量:

http://php.net/manual/en/features.file-upload.errors.php

例如,你可以这样做:

public function __construct($path, $originalName, $mimeType = null, $size = null, $error = null, $test = false)

在测试禁用检查文件是否通过HTTP上传时(如果您的测试实际创建文件),则需要最后一个参数