我有这个课我想在phpspec中测试:
class Something
{
protected $property;
public function __construct($someId)
{
$this->property = Model::find($someId);
}
}
Model :: find()返回一个Model实例。
而且我不想让phpspec使用数据库等。 我试过了
class SomethingSpec
{
public function let(Model $model)
{
$this->property = $model;
}
it_is_initializable...
但这不起作用。
任何人
答案 0 :(得分:1)
PhpSpec鼓励您好好照顾代码的设计方式。很多事情都不可能阻止你伤害自己。 This is by design。如果你想做你问题中提到的事情,请使用其他工具(例如phpunit)。
从构造函数中访问Model::find($someId)
并不是一个好的设计,并且它不可测试(请参阅Dependency Inversion和其他SOLID principles)。
您应该从外部上下文中注入您的依赖项。注入Model
实例或Model::find()
调用的结果:
class Something
{
private $model;
public function __construct(Model $model)
{
$this->model = $model;
}
}
在编写代码之前先使用规范。它会让你的生活更轻松。