PHPUnit约束扩展提供了错误" PHPUnit_Util_Type :: export()"找不到

时间:2015-08-19 12:04:18

标签: php phpunit constraints

我想要一个可以告诉我是否的模拟对象:

  1. 当其中一个方法被调用时
  2. 传递给该方法的其中一个参数
  3. 是一个数组
  4. 并且具有特定的键/值对。
  5. 我想使用PHPUnit的约束来实现,所以我的测试代码看起来像这样:

    $mock = $this->getMock('\Jodes\MyClass');
    $mock->expects($this->once())
            ->method('myMethod')
            ->with(
                    $this->logicalAnd(
                        $this->isType('array'),
                        $this->arrayHasPair('my_key', 'my_value'),
                    )
                );
    // ... code here that should call the mock method
    

    this previous SO question中,这个人最终写出了自己的约束。

    我发现this library似乎实现了很多漂亮的东西。所以我在composer.json的要求部分添加了这一行来安装它:

    "etsy/phpunit-extensions": "@stable"
    

    但是当我尝试使用它时,我收到了一个错误。我这样使用它:

    class MyClassTest extends PHPUnit_Framework_TestCase {
        public function arrayHasPair($key, $value){
            return new PHPUnit_Extensions_Constraint_ArrayHasKeyValuePair($key, $value);
        }
        public function testmyMethod(){
            // code as per my example above
        }
    }
    

    但是这会产生这个错误:

      

    PHP致命错误:在第50行的C:\ MyProject \ vendor \ etsy \ phpunit-extensions \ PHPUnit \ Extensions \ Constraint \ ArrayHasKeyValuePair.php中调用未定义的方法PHPUnit_Util_Type :: export()

    This previous question/answer解释了问题所在,但我不确定应该怎么做。这是否意味着该图书馆的开发者已经放弃了它?有替代品可以使用吗?或者我有什么选择来修复它?我很惊讶PHPUnit中还没有这些基本限制。显然我可以写出自己的约束,但肯定不必要吗?

1 个答案:

答案 0 :(得分:0)

前一段时间删除了PHPUnit_Util_Type::export()方法。您要使用的扩展必须更新为与当前版本的PHPUnit兼容。