는 좀 레거시 코드를 사용하여 응용 프로그램에 대한 몇 가지 통합 테스트를 수행하려합니다. 내가 테스트하려는 것은 응용 프로그램에서 발생하는 특정 일련의 이벤트 (예 : 주문을 넣고 지불하는 등 사용자가 프론트 엔드에서 트리거 한)에서 발생하는 일정한 사슬 체인 이후에 특정 데이터베이스 항목이 존재한다는 것입니다.통합 테스트
현재, 나는 다음 이벤트에 대한 응용 프로그램 논리에 넣어 빈 데이터베이스를 설정 한 후 DB 봐.
더 좋은 방법이 있나요? 그것은 유지하는 것이 고통 스러울 수있는 것 같습니다. 데이터베이스 주장에
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
}
}