phpspec force方法返回值

时间:2015-04-21 19:27:36

标签: php phpspec

我正在尝试测试从另一种方法获取数据的类方法 所以我这样做了:

function it_should_return_json_file_as_array()
{
    $this->exist()->willReturn(true);
    $this->read()->willReturn("{\"key\":\"value\"}");
    $this->getContent()->shouldHaveKeyWithValue('key', 'value');
}

但是当我发起phpspec run时,我得到了这个:

[InvalidArgumentException]
String "" is not a valid classname. 
Please see reference document: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md  

发生了什么事?

1 个答案:

答案 0 :(得分:0)

不可能存储您指定的类的方法,并且无法有目的。

PhpSpec试图告诉你,你决定设计的方式存在问题。

请参阅My top ten favourite PhpSpec limitations - Limitation #2

  

在使用继承扩展行为的情况下,此限制可能变得非常明显。我们继承了一个类,并希望添加一个新方法,在内部将某些行为委托给父类方法。我们不能模拟或存根该方法。这导致我一次又一次地支持组合而不是继承,这是OO设计中的黄金原则。在少数情况下,继承是合理的,我们可以将可重用行为隔离到一个单独的对象中,并使用父对象中的组合,允许我们用双精度替换协作者。

另请阅读Partial Mocking