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

ste*_*lin 6 php phpunit unit-testing

我很好奇其他人如何处理这个问题.写一个测试并不是那么糟糕,但嘲笑有点糟透了,削减了我的流量.是否可以拥有一个'fixtures'目录并且例如只用那个特定的模拟声明说mock_db.php?

更进一步,在函数中抽象出那些模拟是不好的做法?

即:

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

   $mockMYSQL = $dbmock('mysql', 'db1');
   $mockMSSQL = $dbmock('mssql', 'db2');
Run Code Online (Sandbox Code Playgroud)

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

Ond*_*tes 4

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

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

包含全局函数并不是很 OOP,PHP 允许这样做很神奇,但你应该避免它:)