У меня есть файл Unit Test со следующим методом тестирования
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class IndustryTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testURL()
{
$response = $this->get('admin/industry/index');
$response->assertStatus(200);
}
}
В моем routes/web.php
файл, у меня есть следующий код:
Route::group(['middleware' => 'prevent-back-history'],function() {
Route::group([ 'middleware' => 'admin'], function () {
Route::get('admin/industry/index', 'IndustrymapController@industry_index');
});
});
IndustrymapController.php имеет следующий код:
public function industry_index()
{
//get all available industries
$industries = DB::connection('mysql_company_masterdb')
->table('tbl_industry_type')
->whereNull('deleted_at')
->get();
return View('admin.IndustryMaster.index')
->with('industries',$industries);
}
У меня есть файл просмотра внутри admin/IndustryMaster/index.php
который отлично работает в браузере.
Когда я бегу .\vendor\bin\phpunit
Команда в терминале, однако, выдает следующую ошибку:
PHPUnit 7.5.1 by Sebastian Bergmann and contributors.
Runtime: PHP 7.1.12
Configuration: C:\xampp\htdocs\selfcomply\phpunit.xml
F 1 / 1 (100%)
Time: 294 ms, Memory: 14.00MB
There was 1 failure:
1) Tests\Unit\IndustryTest::testURL
Expected status code 200 but received 302.
Failed asserting that false is true.
C:\xampp\htdocs\selfcomply\vendor\laravel\framework\src\Illuminate\Foundation\Testing\TestResponse.php:78
C:\xampp\htdocs\selfcomply\tests\Unit\IndustryTest.php:21
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
Если мой код работает в браузере нормально, почему тест не пройден?
Я думаю, что это как-то связано с URL, который я дал
$response = $this->get('admin/industry/index');
РЕДАКТИРОВАТЬ
Ниже мой код в admin
промежуточный слой
<?php
namespace App\Http\Middleware;
use Closure;
use Sentinel;
class SentinelAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!Sentinel::check())
return redirect('signin')->with('info', 'You must be logged in!');
return $next($request);
}
}
Задача ещё не решена.
Других решений пока нет …