0

我已经开始使用 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 一起使用吗?我只是错过了一些愚蠢的东西吗,我对框架很陌生。

4

1 回答 1

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();
    }
}
于 2013-09-09T09:15:32.803 回答