我很好奇其他人如何处理这个问题。写一个测试并不是那么糟糕,但嘲笑有点糟透了,削减了我的流量。是否可以拥有一个'fixtures'目录,并且只使用mock_db.php来说明这个特定的模拟声明?
更进一步,在函数中抽象出那些模拟是不好的做法?
即:
// function to include a db mock
include_once 'test/fixtures/dbmock.php';
$mockMYSQL = $dbmock('mysql', 'db1');
$mockMSSQL = $dbmock('mssql', 'db2');
JUst有兴趣知道其他有经验的测试人员如何处理这个问题。我正在编写脚本来同步2个数据库,所以这个例子可能变得非常相关。
答案 0 :(得分:3)
我会使用继承 - 在常见的父测试用例类中创建并返回受保护的get *方法中的公共模拟对象。
或者您可以创建更清洁和独立的类,您将在测试套件中实例化并让它创建模拟对象。我更喜欢这种方式,但它有一个缺点 - 你可能不能或不应该使用PHPUnit_Framework_TestCase getMock()方法。我建议你看一下这个方法,并尝试在你的独立类中使用它的逻辑。
包含全局函数不是非常OOP,PHP允许它是相当神奇但你应该避免它:)