1
我正在嘗試使用一些舊代碼對應用程序進行一些集成測試。我期望測試的是在應用程序中發生的某些事件鏈(在用戶的前端觸發,例如投入訂單,支付訂單)發生的某些事件鏈之後,存在某些數據庫條目。使用PHPUnit進行集成測試(檢查數據庫值)
目前,我建立了一個空的數據庫,然後放入事件的應用程序邏輯,然後看看數據庫。
有沒有更好的方法來做到這一點?看起來這可能是一個痛苦要維護。
下面是一些僞代碼:
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
}
}