我只是想了解什么是“正确的方式”编写单元测试在以下情况下:的PHPUnit和模拟许多依赖对象
class Time
{
public function __construct(Hour $h, Minute $m, Second $s) {}
}
class TimeRange
{
public function __construct(Time $start, Time, $end)
{
if ($this->startTime > $this->endTime) {
throw new \Exception;
}
}
}
的目的是,以实现对TIMERANGE单元测试构造函数的方法,这将有助于确保异常抛出在某一点
如何在这种情况下正确地获得时间对象的模拟(没有得到模拟意大利面条)?
看起来你的时间类只是一个值对象,最有可能是不可变的。不要模拟价值对象,只是创建它们。 –
@JakubZalas是的,你是对的,这是我以前做的,但现在我遇到了问题,如果值对象的逻辑将被改变,那么你的所有测试将被毁掉。在看来,它使维护这样的代码非常复杂。使用模拟/存根对象可能更容易 – user1016265
值对象不具有复杂的逻辑。他们是价值观。 –