This is because the POST call is uploading a vfsStream object, which Input::file() does not know how to read. If you dd the contents of Input::file:
try {
dd(Input::file('files'));
foreach(Input::file('files') as $file) {
You will see that it gives you something like:
array:1 [
0 => Symfony\Component\HttpFoundation\File\UploadedFile {#153
-test: false
-originalName: "test_some_test_file.txt"
-mimeType: "application/octet-stream"
-size: null
-error: 0
path: "vfs://exampleDir"
filename: "test_some_test_file.txt"
basename: "test_some_test_file.txt"
pathname: "vfs://exampleDir/test_some_test_file.txt"
extension: "txt"
realPath: false
There isn't as far as I can think a way around this with vfsStream. All I can suggest is that you use vfsStream for more lower level unit testing, that is not reliant upon the Request-Response cycle. Ergo, for this integration level testing, you will need to use a real file.
Good luck!