【问题标题】:Using PHPSpec with array?将 PHPSpec 与数组一起使用?
【发布时间】:2013-09-09 03:33:39
【问题描述】:

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

【问题讨论】:

    标签: php unit-testing bdd mockery phpspec


    【解决方案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();
        }
    }
    

    【讨论】:

    • 额外问题,如果你不介意的话。一旦我按照您指定的方式获得 $systems 数组,我似乎无法遍历它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2017-03-19
    • 2015-10-05
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多