Testing 与PHPUnit的集成测试(检查DB值)

Testing 与PHPUnit的集成测试(检查DB值),testing,phpunit,Testing,Phpunit,我正在尝试使用一些遗留代码对应用程序进行一些集成测试。我想测试的是在某些事件链之后 在应用程序中发生的情况(由用户在前端触发,例如下订单、支付订单),某些数据库条目存在 目前,我设置了一个空数据库,然后输入事件的应用程序逻辑,然后查看数据库 有更好的方法吗?这似乎是一个痛苦的维持 下面是一些伪代码: class someTests extends PHPUnit_Framework_TestCase { function setupScenario1(){ //create a new

我正在尝试使用一些遗留代码对应用程序进行一些集成测试。我想测试的是在某些事件链之后 在应用程序中发生的情况(由用户在前端触发,例如下订单、支付订单),某些数据库条目存在

目前,我设置了一个空数据库,然后输入事件的应用程序逻辑,然后查看数据库

有更好的方法吗?这似乎是一个痛苦的维持

下面是一些伪代码:

class someTests extends PHPUnit_Framework_TestCase {
function setupScenario1(){
    //create a new database, put in initial values
}

//test that an order is created properly
function testScenario1(){
    $this->setupScenario1();
    $this->loadOtherConfigs();

    //now do some application logic
    //setup an object to pass into a factory
    $OrderInfo->ID = 5;
    $OrderInfo->ProductID = 1;

    $Order = new OrderFactory->Create($OrderInfo);
    $PostOrderProcessor = new $PostOrderProcessor();
    $PostOrderProcessor->Process($Order);

    //assert that certain database entries were made
}

//test that an order is created properly, and then the payment is processed properly
function testScenario12(){
    $this->testScenario1();

    //hard coded from testScenario1
    $OrderID = 5;

    //setup payment stuff
    $PaymentInfoObj->Amount = 500;
    $PaymentInfoObj->Type = PaymentType::CREDIT_CARD;

    //now do some application logic
    $MockPaymentResult->Status = PaymentResult::APPROVED;
    $MockPaymentProcessor = $this->getMockBuilder('PaymentProcessor')->disableOriginalConstructor()->getMock();
    $MockPaymentProcessor->expects($this->once())
                        ->method('process')
                        ->will($this->returnValue($MockPaymentResult));

    $PaymentProcessingWrapper = new PaymentProcessingWrapper($AppraisalsDAO,$MockPaymentProcessor);
    $Result = $PaymentProcessingWrapper->TryToProcessPayment($OrderID,$PaymentInfoObj);

    //assert that certain database entries were made
}

}

大多数数据库断言问题都是通过测试框架解决的。 这是一个坚实的包装上的PHPUnit。结帐吧,是的

它还集成了流行的ORMs和不同的DBMS


唯一的限制是使用DB模块需要以特殊格式编写测试。数据库断言的大多数问题都是通过测试框架解决的。 这是一个坚实的包装上的PHPUnit。结帐吧,是的

它还集成了流行的ORMs和不同的DBMS

唯一的限制是使用DB模块需要以特殊格式编写测试。对其进行了简要描述