私はコントローラーPost
に典型的なCRUDメソッドを持っています。 は、私はここで、PostPolicyを持っている:Laravelで不正な方法をテストするにはどうすればよいですか?
public function destroy(User $user, Post $post)
{
$user->id === $post->author_id;
}
私はこのためにテストを書きたいです。ユーザーが自分の投稿を削除するかどうかを確認すると、すべてOKになります。
しかし、ときに、他のユーザー、ユーザーが自分のポスト、laravelテスト送信エラーがない削除することができれば、私はテスト:
Illuminate\Auth\Access\AuthorizationException: This action is unauthorized.
どのようにそれをバイパスしたり、書き込みのための別の方法このテストを持っていますか?
あなたは、あなたのテストメソッドの先頭に以下を追加することができ
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Feeds\Feed;
use App\Models\User;
use Tests\SphinxConnection;
use Illuminate\Foundation\Testing\DatabaseMigrations;
class PolicyTest extends TestCase
{
use DatabaseMigrations,
SphinxConnection;
public function testFeedPolicy()
{
$this->expectException(\Illuminate\Auth\Access\AuthorizationException::class);
$user1 = factory(User::class)->create([
'id' => 1,
]);
$user2 = factory(User::class)->create([
'id' => 2,
]);
factory(Post::class)->create([
'id' => 27,
'editor_id' => 2,
]);
factory(Post::class)->create([
'id' => 30,
'editor_id' => 2,
]);
$this->delete('/api/feeds/27', [], [
'authorization' => "Bearer {$user2->api_token}",
'accept' => 'application/json',
])->assertJson([
]);;
$this->delete('/api/feeds/30', [], [
'authorization' => "Bearer {$user1->api_token}",
'accept' => 'application/json',
])->assertJson([
]);;
}
}
テストのコードを表示できますか? –
更新ポスト.... – yrrtyrt
どのバージョンのLaravel 5をお使いですか? –