我对其他人如何处理这一点感到好奇。编写测试还不错,但是 mock 有点糟,并且减少了我的工作量。是否可以拥有一个“灯具”目录并例如仅带有该特定的模拟声明就说出了mock_db.php,这是可以的吗?

更进一步,将那些模拟抽象到函数中是否会是不好的做法?

IE:

 // function to include a db mock
   include_once 'test/fixtures/dbmock.php';

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

JUst有兴趣了解其他经验丰富的测试人员如何处理此问题。我正在编写脚本来同步2个数据库,因此该示例可能变得非常相关。

最佳答案

我要么选择继承,要么在公共(public)父测试用例类中的受​​保护的get *方法中创建并返回公共(public)的模拟对象。

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

包括全局函数不是非常好的OOP,PHP允许这样做是很神奇的,但是您应该避免使用它:)

关于phpunit-为多个测试套件重用模拟对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6054895/

10-16 22:01