【发布时间】:2012-05-05 22:58:39
【问题描述】:
我开始接触更多面向对象的 PHP 并为这些对象编写测试。我的主要问题是:如果我有一个Blog_Post 对象,并且我调用$post->setCategory( 'Foo' ),是否应该直接保存到数据库中?
我问的原因是单元测试,我经常不想将数据库用于这类事情,因为那不是我要测试的。
我看到人们建议做类似的事情
function __construct( PDO $db )
传入要使用的数据库对象,然后在测试时使用mock。但是,我真的不喜欢总是通过调用 Blog_Post 类来实例化我的数据库对象的想法。
这是在 WordPress 的范围内,它基本上没有 OO 方法 - 在我当前的 Blog_Post 中,setter 方法只会调用 DB(通过全局 $wpdb!!(我知道!))。
我真的很想知道,这种情况下阻力最小的路径的一般模式是什么。 Blog_Post 会只写它自己,还是可能会使用“save()”方法来实际将所有设置的属性推送到数据库?或者在调用 setter 之前在对象“setSaveToDB(false)”上设置一个标志。
谢谢,希望这有点意义!
【问题讨论】:
-
简短回答:否。将加载保存到另一层。
-
@hakre 谢谢,正是我想要的——一个直接的答案:)
-
我将其添加为答案。
标签: php wordpress unit-testing