我正在尝试测试上传的文件功能。我在嘲笑UploadedFile,但是我从控制器那里得到了这个错误:
[Symfony的\元器件\调试\异常\ FatalErrorException]
在非对象上调用成员函数isValid()
我的控制器将收到上传的文件(模拟的UploadedFile),但我无法调用UploadedFile的任何方法。
我的控制器:
class FileController extends Controller
{
public function upload(Request $request)
{
return $request->file('file')->isValid();
}
}
我的测试如下:
class FileTest extends TestCase
{
private $fileMock;
public function setUp()
{
parent::setUp();
$this->fileMock = Mockery::mock(Symfony\Component\HttpFoundation\File\UploadedFile::class,
[
'getClientOriginalName' => public_path() . '/images/foo.jpg',
'getClientOriginalExtension' => 'jpg',
'image/jpeg',
null,
null,
true
]);
}
/** @test */
public function it_gets_an_uploaded_file()
{
$this->fileMock
->shouldReceive('isValid')
->once()
->andReturn(true);
$this->call('POST', 'file/upload', [], [], ['file' => [$this->fileMock]]);
$this->assertResponseOk();
}
public function tearDown()
{
Mockery::close();
}
}
答案 0 :(得分:2)
问题是$request->file('file')
是一个数组。因此,您需要更改:
public function upload(Request $request)
{
return $request->file('file')->isValid();
}
到此:
public function upload(Request $request)
{
return $request->file('file')[0]->isValid();
}
在你的FileController中。