Laravel:phpunit test all route

testez vos route simplement

with this code you can test all get page without params (index,create,etc…)

01
class AllRoutesTest extends TestCase
02
{
03
    protected $admin;
04
 
05
public function setUp()
06
{
07
parent::setUp();
08
}
09
 
10
 
11
 
12
/**
13
* test all route
14
*
15
* @group route
16
*/
17
 
18
 
19
 
20
public function testAllRoute()
21
{
22
$routeCollection = Route::getRoutes();
23
 
24
 
25
 
26
//dont send event
27
$this->withoutEvents();
28
$blacklist = [
29
'url/that/not/tested',
30
];
31
$dynamicReg = "/{\\S*}/"; //used for omitting dynamic urls that have {} in uri (http://laravel-tricks.com/tricks/adding-a-sitemap-to-your-laravel-application#comment-1830836789)
32
$this->be($this->admin);
33
foreach ($routeCollection as $route) {
34
if (!preg_match($dynamicReg, $route->getUri()) &&
35
in_array('GET', $route->getMethods()) &&
36
!in_array($route->getUri(), $blacklist)
37
) {
38
$start = $this->microtimeFloat();
39
fwrite(STDERR, print_r('test ' . $route->getUri() . "\n", true));
40
$response = $this->call('GET', $route->getUri());
41
$end   = $this->microtimeFloat();
42
$temps = round($end - $start, 3);
43
fwrite(STDERR, print_r('time: ' . $temps . "\n", true));
44
$this->assertLessThan(15, $temps, "too long time for " . $route->getUri());
45
$this->assertEquals(200, $response->getStatusCode(), $route->getUri() . "failed to load");
46
 
47
}
48
 
49
}
50
}
51
 //get the time take by request
52
public function microtimeFloat()
53
{
54
list($usec, $asec) = explode(" ", microtime());
55
 
56
 
57
 
58
return ((float) $usec + (float) $asec);
59
 
60
}
61
}
62