How can I pass Assertions in PHP Laravel?
To pass assertions in PHP Laravel, your test cases should extend Illuminate\Foundation\Testing\TestCase. This class uses the Illuminate\Foundation\Testing\AssertTrait which are all the Laravel specific assertions.
You can refer to the code below for passing assertions in PHP Laravel.
<?php namespace Illuminate\Foundation\Testing;
use Illuminate\View\View;
trait AssertionsTrait {
/**
* Assert that the client response has an OK status code.
*
* @return void
*/
public function assertResponseOk()
{
$response = $this->client->getResponse();
$actual = $response->getStatusCode();
return $this->assertTrue($response->isOk(), 'Expected status code 200, got ' .$actual);
}
/**
* Assert that the client response has a given code.
*
* @param int $code
* @return void
*/
public function assertResponseStatus($code)
{
return $this->assertEquals($code, $this->client->getResponse()->getStatusCode());
}
/**
* Assert that the response view has a given piece of bound data.
*
* @param string|array $key
* @param mixed $value
* @return void
*/
public function assertViewHas($key, $value = null)
{
if (is_array($key)) return $this->assertViewHasAll($key);
$response = $this->client->getResponse();
if ( ! isset($response->original) || ! $response->original instanceof View)
{
return $this->assertTrue(false, 'The response was not a view.');
}
if (is_null($value))
{
$this->assertArrayHasKey($key, $response->original->getData());
}
else
{
$this->assertEquals($value, $response->original->$key);
}
}
/**
* Assert that the view has a given list of bound data.
*
* @param array $bindings
* @return void
*/
public function assertViewHasAll(array $bindings)
{
foreach ($bindings as $key => $value)
{
if (is_int($key))
{
$this->assertViewHas($value);
}
else
{
$this->assertViewHas($key, $value);
}
}
}
/**
* Assert that the response view is missing a piece of bound data.
*
* @param string $key
* @return void
*/
public function assertViewMissing($key)
{
$response = $this->client->getResponse();
if ( ! isset($response->original) || ! $response->original instanceof View)
{
return $this->assertTrue(false, 'The response was not a view.');
}
$this->assertArrayNotHasKey($key, $response->original->getData());
}
/**
* Assert whether the client was redirected to a given URI.
*
* @param string $uri
* @param array $with
* @return void
*/
public function assertRedirectedTo($uri, $with = array())
{
$response = $this->client->getResponse();
$this->assertInstanceOf('Illuminate\Http\RedirectResponse', $response);
$this->assertEquals($this->app['url']->to($uri), $response->headers->get('Location'));
$this->assertSessionHasAll($with);
}
/**
* Assert whether the client was redirected to a given route.
*
* @param string $name
* @param array $parameters
* @param array $with
* @return void
*/
public function assertRedirectedToRoute($name, $parameters = array(), $with = array())
{
$this->assertRedirectedTo($this->app['url']->route($name, $parameters), $with);
}
/**
* Assert whether the client was redirected to a given action.
*
* @param string $name
* @param array $parameters
* @param array $with
* @return void
*/
public function assertRedirectedToAction($name, $parameters = array(), $with = array())
{
$this->assertRedirectedTo($this->app['url']->action($name, $parameters), $with);
}
/**
* Assert that the session has a given list of values.
*
* @param string|array $key
* @param mixed $value
* @return void
*/
public function assertSessionHas($key, $value = null)
{
if (is_array($key)) return $this->assertSessionHasAll($key);
if (is_null($value))
{
$this->assertTrue($this->app['session.store']->has($key), "Session missing key: $key");
}
else
{
$this->assertEquals($value, $this->app['session.store']->get($key));
}
}
/**
* Assert that the session has a given list of values.
*
* @param array $bindings
* @return void
*/
public function assertSessionHasAll(array $bindings)
{
foreach ($bindings as $key => $value)
{
if (is_int($key))
{
$this->assertSessionHas($value);
}
else
{
$this->assertSessionHas($key, $value);
}
}
}
/**
* Assert that the session has errors bound.
*
* @param string|array $bindings
* @param mixed $format
* @return void
*/
public function assertSessionHasErrors($bindings = array(), $format = null)
{
$this->assertSessionHas('errors');
$bindings = (array) $bindings;
$errors = $this->app['session.store']->get('errors');
foreach ($bindings as $key => $value)
{
if (is_int($key))
{
$this->assertTrue($errors->has($value), "Session missing error: $value");
}
else
{
$this->assertContains($value, $errors->get($key, $format));
}
}
}
/**
* Assert that the session has old input.
*
* @return void
*/
public function assertHasOldInput()
{
$this->assertSessionHas('_old_input');
}
}