phpunit-为多个测试套件重用模拟对象

phpunit-为多个测试套件重用模拟对象,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我很好奇其他人是如何看待这一点的。写一个测试并没有那么糟糕,但是嘲弄有点糟糕,会切断我的思路。有一个“fixtures”目录,比如说mock_db.php和那个特定的mock声明可以吗 更进一步说,将这些模拟抽象到函数中会是一种不好的做法吗 即: 只是想知道其他有经验的测试人员是如何处理这个问题的。我正在编写脚本来同步2个数据库,所以这个示例可能会变得非常相关。我会选择继承——在公共父测试用例类中的受保护get*方法中创建并返回公共模拟对象 或者,您可以创建更干净、独立的类,您可以在测试套件中实

我很好奇其他人是如何看待这一点的。写一个测试并没有那么糟糕,但是嘲弄有点糟糕,会切断我的思路。有一个“fixtures”目录,比如说mock_db.php和那个特定的mock声明可以吗

更进一步说,将这些模拟抽象到函数中会是一种不好的做法吗

即:


只是想知道其他有经验的测试人员是如何处理这个问题的。我正在编写脚本来同步2个数据库,所以这个示例可能会变得非常相关。

我会选择继承——在公共父测试用例类中的受保护get*方法中创建并返回公共模拟对象

或者,您可以创建更干净、独立的类,您可以在测试套件中实例化该类,并让它创建您的模拟对象。我更喜欢这种方式,但它有一个缺点——您可能不能或不应该使用PHPUnit_Framework_TestCase getMock()方法。我建议您看看这个方法,并尝试在独立类中使用它的逻辑


包含全局函数不是很好的OOP,PHP允许但您应该避免它,这是相当神奇的:)

数据提供程序帮不上忙吗?您是在谈论使用
$this->getMock(“”)
创建的PHPUnit mock对象,还是这些自定义编写的mock?使用fixture创建测试支持对象是完全有效的,建议使用。@David我想让mock可用于不同的测试套件。对于这个嘲弄性的业务,我还是相当生疏,对如何实现它一无所知。嘿,谢谢你的提示,在测试用例中为小类子类化是我所缺少的部分。根据你的建议,我已经创建了几个Standalone,但我仍然需要研究重用getMock()创建者的方法。8年后。。。谁能举例说明如何做到这一点?:)
 // function to include a db mock
   include_once 'test/fixtures/dbmock.php';

   $mockMYSQL = $dbmock('mysql', 'db1');
   $mockMSSQL = $dbmock('mssql', 'db2');