gpt4 book ai didi

testing - 使用 PHPUnit 进行集成测试(检查数据库值)

转载 作者:行者123 更新时间:2023-11-28 20:45:57 25 4
gpt4 key购买 nike

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

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

有更好的方法吗?维护起来似乎很痛苦。

这是一些伪代码:

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
}

最佳答案

大多数关于数据库断言的问题都由 Codeception 解决了测试框架。它是 PHPUnit 之上的可靠包装器。检查它是 Db module .

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

唯一的限制是使用 DB 模块需要以特殊格式编写测试。简要描述here .

关于testing - 使用 PHPUnit 进行集成测试(检查数据库值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10077137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com