Использование PHPSpec с массивом?

Я начал использовать PHPSpec 2, и мне нравится Mockery, но я столкнулся с проблемой, которую не могу понять.

У меня есть массив, возвращаемый статической функцией, и я хочу проверить этот массив. Убедитесь, что все необходимые ключи есть и т. д.

Я старался:

$systems = CacheFactory::getCacheSystems();
$systems->shouldBeArray();

Так же как:

$systems = CacheFactory::getCacheSystems();
$this->spec($systems)->shouldBeArray();

Но ни то, ни другое не сработало. Во-первых, по понятным причинам, ошибка сказала, что $systems не является объектом. Вторая ошибка говорила, что я не могу сериализовать замыкание. В массиве есть замыкания (это массив конфигурации), но я даже пытался их отфильтровать, но безрезультатно.

Пример массива:

array(
'someCache' => array(
    'cache' => 'SomeCacheSystem',
    'checks' => function () { return isCacheActivated(); }
),

Возможно ли это с PHPSpec 2 в настоящее время? Я просто пропустил что-то глупое, я новичок в фреймворке.


person Ben    schedule 09.09.2013    source источник


Ответы (1)


Я предполагаю, что CacheFactory является предметом вашей спецификации:

<?php

namespace spec;

use PhpSpec\ObjectBehavior;
use Prophecy\Argument;

class CacheFactorySpec extends ObjectBehavior
{
    function it_has_all_the_keys_needed()
    {
        $this::getCacheSystems()->shouldBeArray();
    }
}
person Marcello Duarte    schedule 09.09.2013
comment
Бонусный вопрос, если не возражаете. Кажется, я не могу перебрать массив $systems, как только получу его так, как вы указали - person Ben; 14.09.2013