文件
xionggeshop/tests/HuifuBridgeTest.php

94 行
3.3 KiB
PHP

<?php
/**
* 汇付支付与分账桥接状态单元测试 (TDD)
*/
class HuifuBridgeTest
{
private $passed = 0;
private $failed = 0;
public function run()
{
echo "=== 开始执行 汇付支付与桥接单元测试 (TDD) ===\n";
$this->testInfoIniStateEnabled();
$this->testPayServiceProfitSharingParameter();
$this->testDeployScriptContainsPhpFpmReload();
$this->testAddonsHooksRegistered();
echo "\n测试结果: {$this->passed} 通过, {$this->failed} 失败\n";
if ($this->failed > 0) {
exit(1);
}
}
private function assert($condition, $message)
{
if ($condition) {
echo " [PASS] {$message}\n";
$this->passed++;
} else {
echo " [FAIL] {$message}\n";
$this->failed++;
}
}
/**
* 测试 addons/shopro_huifu/info.ini 中 state 必须为 1
*/
public function testInfoIniStateEnabled()
{
$iniPath = __DIR__ . '/../addons/shopro_huifu/info.ini';
$this->assert(is_file($iniPath), "info.ini 必须存在: {$iniPath}");
$info = parse_ini_file($iniPath);
$state = $info['state'] ?? null;
$this->assert($state === '1' || $state === 1, "shopro_huifu 插件 state 必须为 1 (启用),当前为: " . var_export($state, true));
}
/**
* 测试 PayService.php 中不能向 Yansongda v2 传递 settle_info 数组,避免 Array to string conversion 报错
*/
public function testPayServiceProfitSharingParameter()
{
$payServicePath = __DIR__ . '/../addons/shopro/library/PayService.php';
$this->assert(is_file($payServicePath), "PayService.php 必须存在");
$content = file_get_contents($payServicePath);
$hasSettleInfoArray = strpos($content, "\$order['settle_info'] = ['profit_sharing' => true]") !== false;
$this->assert(!$hasSettleInfoArray, "PayService 中不能包含 settle_info 数组赋值 (会导致 Yansongda v2 XML 序列化报 Array to string conversion)");
}
/**
* 测试 deploy.sh 部署脚本中必须包含 php-fpm reload 命令刷新 OPcache
*/
public function testDeployScriptContainsPhpFpmReload()
{
$deployScriptPath = __DIR__ . '/../deploy.sh';
$this->assert(is_file($deployScriptPath), "deploy.sh 脚本必须存在");
$content = file_get_contents($deployScriptPath);
$hasReload = strpos($content, 'php-fpm-73 reload') !== false || strpos($content, 'php-fpm reload') !== false;
$this->assert($hasReload, "deploy.sh 部署脚本必须包含 php-fpm reload 刷新 OPcache");
}
/**
* 测试 application/extra/addons.php 中必须注册 shopro_huifu 及 shopro_pay_create 钩子
*/
public function testAddonsHooksRegistered()
{
$addonsPath = __DIR__ . '/../application/extra/addons.php';
$this->assert(is_file($addonsPath), "addons.php 必须存在");
$addons = require $addonsPath;
$appInit = $addons['hooks']['app_init'] ?? [];
$this->assert(in_array('shopro_huifu', $appInit), "addons.php app_init 必须包含 shopro_huifu");
$payCreate = $addons['hooks']['shopro_pay_create'] ?? [];
$this->assert(!empty($payCreate), "addons.php 必须注册 shopro_pay_create 钩子");
}
}
$test = new HuifuBridgeTest();
$test->run();