带有模拟的 PHPUnit 测试覆盖率 API
PHPUnit test coverage API with mock
我,我想介绍一种从 API.
获取身份验证的方法
这是我的 class:
class MyService
{
private $api_token;
private $uri_api;
public function __construct(string $api_token, string $uri_api){
$this->api_token = $api_token;
$this->uri_api = $uri_api;
}
public function api_authentication(){
$client = HttpClient::create();
return $client->request('GET', $this->getUri_api().'salespoints/', [
'auth_bearer' => $this->getApi_token()
]);
}
}
这是我的测试 class:
class MyServiceTest extends WebTestCase
{
public function test_api_authentication(){
$client = new HttpClient();
$stub = $this->getMockBuilder(myService::class)
->disableOriginalConstructor()
->disableOriginalClone()
->disableArgumentCloning()
->disallowMockingUnknownTypes()
->getMock();
$stub->method('api_authentication')->willReturn($client);
$this->assertSame($client, $stub->api_authentication());
}
}
我正在使用 PHPUnit here(示例 8.4)的文档。
问题是当我 运行 phpunit 但 sonarQube 告诉我它不是测试覆盖率时我的测试通过了。我是 phpunit 的新手,所以如果您有任何建议。
感谢您的帮助!
你有 select 首选覆盖率引擎(如 xdebug 或 phpdbg)吗?
如果您使用的是 phpstorm,您可以右键单击测试目录,然后转到 Edit 'tests (PHPUnit)
。
然后select一个代码覆盖率引擎
然后点击Apply
。
现在运行你的代码覆盖测试
嗯,经过研究,我想我想测试的方法是不可能被覆盖的。这是一个 API 调用,覆盖范围需要由编写此代码的开发人员完成。
感谢您的帮助。
我,我想介绍一种从 API.
获取身份验证的方法这是我的 class:
class MyService
{
private $api_token;
private $uri_api;
public function __construct(string $api_token, string $uri_api){
$this->api_token = $api_token;
$this->uri_api = $uri_api;
}
public function api_authentication(){
$client = HttpClient::create();
return $client->request('GET', $this->getUri_api().'salespoints/', [
'auth_bearer' => $this->getApi_token()
]);
}
}
这是我的测试 class:
class MyServiceTest extends WebTestCase
{
public function test_api_authentication(){
$client = new HttpClient();
$stub = $this->getMockBuilder(myService::class)
->disableOriginalConstructor()
->disableOriginalClone()
->disableArgumentCloning()
->disallowMockingUnknownTypes()
->getMock();
$stub->method('api_authentication')->willReturn($client);
$this->assertSame($client, $stub->api_authentication());
}
}
我正在使用 PHPUnit here(示例 8.4)的文档。
问题是当我 运行 phpunit 但 sonarQube 告诉我它不是测试覆盖率时我的测试通过了。我是 phpunit 的新手,所以如果您有任何建议。
感谢您的帮助!
你有 select 首选覆盖率引擎(如 xdebug 或 phpdbg)吗?
如果您使用的是 phpstorm,您可以右键单击测试目录,然后转到 Edit 'tests (PHPUnit)
。
然后select一个代码覆盖率引擎
然后点击Apply
。
现在运行你的代码覆盖测试
嗯,经过研究,我想我想测试的方法是不可能被覆盖的。这是一个 API 调用,覆盖范围需要由编写此代码的开发人员完成。 感谢您的帮助。