【发布时间】:2021-11-01 10:52:05
【问题描述】:
我正在尝试在 phpunit 中测试我的身份验证服务提供程序。 provider中的代码是:
class AuthServiceProvider extends ServiceProvider {
public function register() {
}
public function boot() {
$this->app['auth']->viaRequest('api', function ($request) {
if (!isset($_SERVER['HTTP_AUTHORIZATION'])) {
return null;
} else {
return new User("some params");
}
}
}
}
}
目前我已经模拟了 Application::class 的实例,并且可以测试是否调用了 register 和 boot 方法,但是现在我需要测试 viaRequest 方法中的代码。我尝试执行以下操作:
class AuthServiceProviderTest extends TestCase
{
protected $app_mock;
protected $provider;
public function setUp(): void
{
$this->setUpMocks();
$this->provider = new AuthServiceProvider($this->app_mock);
parent::setUp();
}
private function setUpMocks(){
$this->app_mock = \Mockery::mock(Application::class);
}
public function testIfProviderIsConstructed(){
$this->assertInstanceOf(AuthServiceProvider::class, $this->provider);
}
public function testIfviaRequestIsCalled(){
$this->app_mock->shouldReceive("viaRequest")
->once();
$this->provider->boot();
}
}
但出现错误:
Error : Cannot use object of type Mockery_0_Illuminate_Contracts_Foundation_Application as array
您能否建议我应该如何测试 viaRequest 方法?
【问题讨论】:
-
我的回答对您的问题有帮助还是您还有其他问题?