Codeception/AspectMock Parent class not found by locator i Yii2
I'm trying to use Codeception/AspectMock in Yii2 tests.
I have two classes:
One:
namespace backendbaseModel;
class BaseModel
public static function getId()
return 9;
Second:
use backendbaseModelBaseModel;
class ModelA extends BaseModel
public static function getId()
return 5;
I am trying to test ModelA:
class TestModel extends CodeceptionTestUnit
public function testGetId()
test::double(ModelA::getId(), ['getId' => 7]);
$this->assertSame(7, ModelA::getId());
I will do the test with an error:
1) TestMode: Get id
Test tests/unit/TestModelTest.php:testGetId
[InvalidArgumentException] Class backendbaseModelBaseModel was not found by locator
#1 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:125
#2 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:140
#3 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:44
#4 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:150
#5 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:446
#6 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:924
#7 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:317
#8 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:303
#9 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:121
#10 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:78
My configuration file:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', __DIR__.'/../../');
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
$kernel = AspectMockKernel::getInstance();
$kernel->init([
'debug' => true,
'cacheDir' => __DIR__ . '/_data/cache',
'includePaths' => [__DIR__.'/../../backend'],
]);
$kernel->loadFile(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
I tried the solution proposed here (in the first answer):
Codeception/AspectMock Parent class not found by locator
The error stops appearing, but then the getId () method returns 5 instead of 7.
php yii2 codeception
add a comment |
I'm trying to use Codeception/AspectMock in Yii2 tests.
I have two classes:
One:
namespace backendbaseModel;
class BaseModel
public static function getId()
return 9;
Second:
use backendbaseModelBaseModel;
class ModelA extends BaseModel
public static function getId()
return 5;
I am trying to test ModelA:
class TestModel extends CodeceptionTestUnit
public function testGetId()
test::double(ModelA::getId(), ['getId' => 7]);
$this->assertSame(7, ModelA::getId());
I will do the test with an error:
1) TestMode: Get id
Test tests/unit/TestModelTest.php:testGetId
[InvalidArgumentException] Class backendbaseModelBaseModel was not found by locator
#1 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:125
#2 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:140
#3 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:44
#4 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:150
#5 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:446
#6 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:924
#7 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:317
#8 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:303
#9 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:121
#10 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:78
My configuration file:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', __DIR__.'/../../');
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
$kernel = AspectMockKernel::getInstance();
$kernel->init([
'debug' => true,
'cacheDir' => __DIR__ . '/_data/cache',
'includePaths' => [__DIR__.'/../../backend'],
]);
$kernel->loadFile(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
I tried the solution proposed here (in the first answer):
Codeception/AspectMock Parent class not found by locator
The error stops appearing, but then the getId () method returns 5 instead of 7.
php yii2 codeception
I made a mistake in the linetest :: double (ModelA :: getId (), ['getId' => 7]);
, should betest :: double (ModelA :: class, ['getId' => 7] )
. This way they work correctly. Sorry for the confusion
– Łukasz Górowski
Nov 14 '18 at 10:31
add a comment |
I'm trying to use Codeception/AspectMock in Yii2 tests.
I have two classes:
One:
namespace backendbaseModel;
class BaseModel
public static function getId()
return 9;
Second:
use backendbaseModelBaseModel;
class ModelA extends BaseModel
public static function getId()
return 5;
I am trying to test ModelA:
class TestModel extends CodeceptionTestUnit
public function testGetId()
test::double(ModelA::getId(), ['getId' => 7]);
$this->assertSame(7, ModelA::getId());
I will do the test with an error:
1) TestMode: Get id
Test tests/unit/TestModelTest.php:testGetId
[InvalidArgumentException] Class backendbaseModelBaseModel was not found by locator
#1 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:125
#2 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:140
#3 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:44
#4 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:150
#5 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:446
#6 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:924
#7 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:317
#8 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:303
#9 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:121
#10 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:78
My configuration file:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', __DIR__.'/../../');
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
$kernel = AspectMockKernel::getInstance();
$kernel->init([
'debug' => true,
'cacheDir' => __DIR__ . '/_data/cache',
'includePaths' => [__DIR__.'/../../backend'],
]);
$kernel->loadFile(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
I tried the solution proposed here (in the first answer):
Codeception/AspectMock Parent class not found by locator
The error stops appearing, but then the getId () method returns 5 instead of 7.
php yii2 codeception
I'm trying to use Codeception/AspectMock in Yii2 tests.
I have two classes:
One:
namespace backendbaseModel;
class BaseModel
public static function getId()
return 9;
Second:
use backendbaseModelBaseModel;
class ModelA extends BaseModel
public static function getId()
return 5;
I am trying to test ModelA:
class TestModel extends CodeceptionTestUnit
public function testGetId()
test::double(ModelA::getId(), ['getId' => 7]);
$this->assertSame(7, ModelA::getId());
I will do the test with an error:
1) TestMode: Get id
Test tests/unit/TestModelTest.php:testGetId
[InvalidArgumentException] Class backendbaseModelBaseModel was not found by locator
#1 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:125
#2 /var/www/vendor/goaop/parser-reflection/src/ReflectionEngine.php:140
#3 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:44
#4 /var/www/vendor/goaop/parser-reflection/src/ReflectionClass.php:150
#5 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:446
#6 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:924
#7 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:317
#8 /var/www/vendor/goaop/parser-reflection/src/Traits/ReflectionClassLikeTrait.php:303
#9 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:121
#10 /var/www/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php:78
My configuration file:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', __DIR__.'/../../');
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
$kernel = AspectMockKernel::getInstance();
$kernel->init([
'debug' => true,
'cacheDir' => __DIR__ . '/_data/cache',
'includePaths' => [__DIR__.'/../../backend'],
]);
$kernel->loadFile(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
I tried the solution proposed here (in the first answer):
Codeception/AspectMock Parent class not found by locator
The error stops appearing, but then the getId () method returns 5 instead of 7.
php yii2 codeception
php yii2 codeception
asked Nov 13 '18 at 8:11
Łukasz GórowskiŁukasz Górowski
1
1
I made a mistake in the linetest :: double (ModelA :: getId (), ['getId' => 7]);
, should betest :: double (ModelA :: class, ['getId' => 7] )
. This way they work correctly. Sorry for the confusion
– Łukasz Górowski
Nov 14 '18 at 10:31
add a comment |
I made a mistake in the linetest :: double (ModelA :: getId (), ['getId' => 7]);
, should betest :: double (ModelA :: class, ['getId' => 7] )
. This way they work correctly. Sorry for the confusion
– Łukasz Górowski
Nov 14 '18 at 10:31
I made a mistake in the line
test :: double (ModelA :: getId (), ['getId' => 7]);
, should be test :: double (ModelA :: class, ['getId' => 7] )
. This way they work correctly. Sorry for the confusion– Łukasz Górowski
Nov 14 '18 at 10:31
I made a mistake in the line
test :: double (ModelA :: getId (), ['getId' => 7]);
, should be test :: double (ModelA :: class, ['getId' => 7] )
. This way they work correctly. Sorry for the confusion– Łukasz Górowski
Nov 14 '18 at 10:31
add a comment |
1 Answer
1
active
oldest
votes
You have static method and you override getId function in ModelA, and in test you are invoking ModelA class, so it should return 5 in you case.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53276511%2fcodeception-aspectmock-parent-class-not-found-by-locator-i-yii2%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You have static method and you override getId function in ModelA, and in test you are invoking ModelA class, so it should return 5 in you case.
add a comment |
You have static method and you override getId function in ModelA, and in test you are invoking ModelA class, so it should return 5 in you case.
add a comment |
You have static method and you override getId function in ModelA, and in test you are invoking ModelA class, so it should return 5 in you case.
You have static method and you override getId function in ModelA, and in test you are invoking ModelA class, so it should return 5 in you case.
answered Nov 13 '18 at 9:45
Borisa EricBorisa Eric
29916
29916
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53276511%2fcodeception-aspectmock-parent-class-not-found-by-locator-i-yii2%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I made a mistake in the line
test :: double (ModelA :: getId (), ['getId' => 7]);
, should betest :: double (ModelA :: class, ['getId' => 7] )
. This way they work correctly. Sorry for the confusion– Łukasz Górowski
Nov 14 '18 at 10:31