2013-09-09 2 views
0

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

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

Я пробовал:

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

Как также:

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

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

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

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

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

ответ

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(); 
    } 
} 
+3

Bonus вопрос, если вы не возражаете. Кажется, я не могу пройти через массив '$ systems', как только получаю его так, как вы указали – Ben