いまいち理由がよくわからなかったのですが直接その$this->postを追ってみましょう。
対象のコードは、Illuminate/Foundation/Testing/Concerns/MakesHttpRequestsクラス(/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequest.php)にあります。
php
1public function post($uri, array $data = [], array $headers = [])
2{
3 $server = $this->transformHeadersToServerVars($headers);
4 return $this->call('POST', $uri, $data, [], [], $server);
5}
transformHeadersToServerVarsは一旦放っておいて、$this->callを見てみます。
php
1public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
2{
3 $kernel = $this->app->make(HttpKernel::class);
4 $files = array_merge($files, $this->extractFilesFromDataArray($parameters));
5 $symfonyRequest = SymfonyRequest::create(
6 $this->prepareUrlForRequest($uri), $method, $parameters,
7 $cookies, $files, array_replace($this->serverVariables, $server), $content
8 );
9 $response = $kernel->handle(
10 $request = Request::createFromBase($symfonyRequest)
11 );
12 $kernel->terminate($request, $response);
13 return $this->createTestResponse($response);
14}
私が確認した時は上記のようなコードになっていました。
このcallメソッドは基本的にファンクショナルテストに利用されているので、ユニットテストで使うなら直接Requestを生成してメソッドに渡すのが楽だと思います。
なので、Requestだけ必要なのであれば
$files = $this->extractFilesFromDataArray(['file' => UploadedFile::fake()->image('file.png', 600, 600)]);
$symfonyRequest = SymfonyRequest::create(
$this->prepareUrlForRequest(route('post')), 'POST', [],
[], $files, $this->serverVariables);
$request = Request::createFromBase($symfonyRequest);
// testCreateContentImage($request);
のような形で実装できるかなと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。