我有实现特定接口并为特定数据库扩展基类的存储库类。
基类:
abstract class CouchDB
{
protected $db;
public function __construct(Sag $db)
{
$this->db = $db;
}
private function call_get($url) {...} //this is a wrapper for $db->get()
}
派生类:
class CouchExpression extends CouchDB implements ExpressionInterface
{
public function __construct(Sag $db)
{
parent::__construct($db);
}
}
规格:
class CouchExpressionSpec extends ObjectBehavior
{
public function let($db)
{
$db->beADoubleOf('\Sag');
$this->beConstructedWith($db);
}
public function it_gets_returned_by_its_id()
{
$this->db->get('...')->willReturn([]);
}
}
运行 PHPSpec 时,我得到:property db not found
除了将属性设置为之外,还有其他方法可以解决此问题public
吗?
将其设置为后,public
我得到:call to a member function willReturn() on a non-object.
所以我无法继续->willReturn()
运行$this->db
但为什么?在测试方法中执行此操作时let
,它可以工作。但并非所有测试都需要返回相同的数据......
我如何让它运行?