我正在使用Symfony框架的guard component開發phpcas包。我的包正在工作,但我想做一些單元測試。我想測試我的CasAuthenticator。 PhpCAS library正在使用靜態方法。所以我決定用Mock Aspect來嘲笑它。我在模擬方面配置中錯過了什麼?
我配置了看點,但我仍然有一個錯誤。
這是一個正在運行但失敗的簡化測試。
預計PhpCAS :: setDebug被調用,但它從未發生過。得到:
C:\ wamp64 \ WWW \ casguard \ casguard \廠商\ codeception \縱橫模擬\ SRC \ AspectMock \代理\ Verifier.php:64
C:\ wamp64 \ WWW \ casguard \ casguard \測試\ SimpleTest.php:32
//root_dir/Tests/SimpleTest.php
namespace AlexandreT\Bundle\CasGuardBundle\Tests;
use PHPUnit\Framework\TestCase;
use AspectMock\Test as test;
use PhpCAS;
class SimpleTest extends TestCase
{
public function testAspectMock()
{
$phpCas = test::double('PhpCAS', ['setDebug' => function() {
echo 'YES I CALL THE MOCKED Debug function';
}]);
PhpCAS::setDebug();
$phpCas->verifyInvoked('setDebug', false);
}
protected function tearDown()
{
parent::tearDown();
test::clean();
}
}
輸出不包含YES我CALL嘲笑調試功能,所以我認爲PhpCAS不受看點嘲笑。
我仔細看了this documentation和我配置我的引導文件是這樣的:
//root_dir/Tests/bootstrap.php
include __DIR__.'/../vendor/autoload.php'; // composer autoload
$kernel = \AspectMock\Kernel::getInstance();
$kernel->init([
'debug' => true,
'includePaths' => [
__DIR__.'/../vendor/jasig/phpcas',
],
]);
正如你可以看到,我增加了供應商目錄,其中Cas.php
聲明PhpCAS類。但它不會改變任何事情。我做了一些測試:bootstrap.php文件由phpunit加載。
我在模擬方面配置中錯過了什麼?