Unit tests are more difficult for me than functional tests, and I am trying to write a unit test that relates to my middleware, but what goes wrong. Can someone help me fix this error, or write a normal unit test for this middleware.
My middleware
<?php
namespace AppHttpMiddleware;
use AppServicesSettingsService;
use Closure;
use IlluminateHttpRequest;
use IlluminateSupportFacadesApp;
final class Locale
{
private SettingsService $settingsService;
public function __construct(SettingsService $settingsService)
{
$this->settingsService = $settingsService;
}
public function handle(Request $request, Closure $next): mixed
{
$locale = $this->settingsService->get('language', app()->getLocale());
app()->setLocale($locale);
return $next($request);
}
}
my test
<?php
namespace TestsUnit;
use AppHttpMiddlewareLocale;
use AppServicesSettingsService;
use IlluminateHttpRequest;
use PHPUnitFrameworkTestCase;
class LocaleMiddlewareTest extends TestCase
{
/**
* A basic unit test example.
*
* @return void
*/
public function test_example()
{
$request = new Request;
$settingsService = $this->getMockBuilder(SettingsService::class)->disableOriginalConstructor()->getMock();
$middleware = new Locale($settingsService);
$middleware->handle($request, function ($req) {
$this->assertEquals('en', app()->getLocale());
});
}
}
question from:
https://stackoverflow.com/questions/65925661/call-to-undefined-method-illuminate-container-containergetlocale-laravel-8 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…