yii phpunit getMockBuilder не работает с —filter

В проекте Yii я использую phpunit с getMockbuilder. Когда я запускаю модульные тесты для всего файла, они все проходят. Тем не менее, когда я делаю phpunit --filter testMyFunctionЯ получаю следующую ошибку. «Вызов неопределенного метода Mock_Account_3a811374 :: __ construct () …»

После небольшой проверки я вижу, что если —filter заканчивается тестом, который не использует макет в дополнение к тесту, то он работает нормально.

У кого-нибудь есть идеи как это исправить?

Вот часть моего кода (упрощенно) …

use components\Account;

class UtilsTest extends CDbTestCase
{
...
public function testMyFunction()
{
$accountStub = $this->getMockBuilder('Account')
->disableOriginalConstructor()
->setMethods(array('methodToStub'))
->getMock();

$accountStub->expects($this->any())
->method('methodToStub')
->will($this->returnValue(false));

$accountStub->__construct();
...
}
}

3

Решение

Я смущен тем, что пытаются сделать с $accountStub->__construct() когда вы указали, что не хотите вызывать оригинальный конструктор с ->disableOriginalConstructor()?

Вы можете вызвать конструктор самостоятельно и передать параметры с setConstructorArgs(array $args), Так что это будет выглядеть примерно так:

$accountStub = $this->getMockBuilder('Account')
->setConstructorArgs($args)
->getMock();

Однако не имеет смысла называть это одновременно с disableOriginalConstructor(), Я думаю, что вы, вероятно, хотите сделать одно или другое.

Я полагаю, что сообщение об ошибке, которое вы получаете, это просто PHP, говорящий вам, что вы пытаетесь сделать что-то, что не имеет смысла. Вы пытаетесь вызвать конструктор объекта, который уже был создан. Более того, вы даже специально указали макету пропустить вызов метода конструктора. PHP просто говорит вам, что этот метод не существует.

Я думаю, что вам, вероятно, просто нужно удалить следующую строку и протестировать снова:

$accountStub->__construct();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]