For the most bang for your buck test these methods through the endpoint where you are using them, and not directly like a unit test.
That way:
A. You'll know your implementation works
B. If you change your implementation your test shouldn't have to change.
C. You'll stop duplicating the code that is in your controller.
Here's a rewrite of the first method on how I would want to write it.
function test_a_non_title_match_can_set_a_winner()
{
// By default, let's assume your match factory auto create two wrestlers.
$match = factory(Match::class)->create();
$winner = $match->wrestlers->first();
$loser = $match->wrestlers->last();
$this->post("match/{$match->id}", [
'winner_id' => $winner->id,
'won_by' => 'pinfall',
]);
$match->refresh();
$this->assertEquals('pinfall', $match->won_by);
$this->assertTrue($winner->is($this->match->winner));
$this->assertTrue($loser->is($this->match->loser));
}
I would probably leverage states() with the Match class and have that generate everything that you need so you can follow a similar format as the above..