自定义构造函数和 phpspec
custom constructor and phpspec
我有这个 class 我想在 phpspec 中测试:
class Something
{
protected $property;
public function __construct($someId)
{
$this->property = Model::find($someId);
}
}
Model::find() returns 模型实例。
而且我不希望 phpspec 使用数据库等。
我试过了
class SomethingSpec
{
public function let(Model $model)
{
$this->property = $model;
}
it_is_initializable...
但这不起作用。
有人吗?
PhpSpec 鼓励您注意代码的设计方式。许多事情都无法阻止您伤害自己。 This is by design。如果你想做你在问题中提出的事情,请使用其他工具(例如 phpunit)。
从构造函数访问 Model::find($someId)
不是一个好的设计,它不可测试(参见 Dependency Inversion and other SOLID principles)。
您应该从外部上下文注入您的依赖项。注入一个 Model
实例或 Model::find()
调用的结果:
class Something
{
private $model;
public function __construct(Model $model)
{
$this->model = $model;
}
}
先从规范开始,然后再编写代码。它会让你的生活更轻松。
我有这个 class 我想在 phpspec 中测试:
class Something
{
protected $property;
public function __construct($someId)
{
$this->property = Model::find($someId);
}
}
Model::find() returns 模型实例。
而且我不希望 phpspec 使用数据库等。 我试过了
class SomethingSpec
{
public function let(Model $model)
{
$this->property = $model;
}
it_is_initializable...
但这不起作用。
有人吗?
PhpSpec 鼓励您注意代码的设计方式。许多事情都无法阻止您伤害自己。 This is by design。如果你想做你在问题中提出的事情,请使用其他工具(例如 phpunit)。
从构造函数访问 Model::find($someId)
不是一个好的设计,它不可测试(参见 Dependency Inversion and other SOLID principles)。
您应该从外部上下文注入您的依赖项。注入一个 Model
实例或 Model::find()
调用的结果:
class Something
{
private $model;
public function __construct(Model $model)
{
$this->model = $model;
}
}
先从规范开始,然后再编写代码。它会让你的生活更轻松。