Я читал другие вопросы, связанные с этой проблемой. Но, похоже, предложенные ответы не смогли решить мою проблему.
Структура каталога моего проекта:
src/Tarifa.php
database/dbconect.php
tests/TarifaTest.php
vendor/
composer.json
composer.lock
phpunit.xml
Composer Json
{
"require": {
"phpunit/phpunit": "^8.5"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Класс Tarifa
<?php
include("../database/dbconect.php");
$pdo = conectar();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
class Tarifa {
public function getOrigem() {
$pdo = conectar();
$dddOrigem = $pdo->prepare("SELECT origem FROM tarifa_fixa");
$dddOrigem->execute();
$array = array();
foreach($dddOrigem as $key => $origem){
array_push($array, $origem);
}
return $array;
}
public function getDestino($id) {
$pdo = conectar();
$dddDestino = $pdo->prepare("SELECT destino FROM tarifa_fixa WHERE origem = :id");
$dddDestino->bindvalue(':id',$id);
$dddDestino->execute();
if($dddDestino->rowCount() > 0){
$array = array();
foreach($dddDestino as $key => $destino){
array_push($array, $destino);
}
}
return json_encode($array,true);
}
public function calculaTarifa($origem, $destino, $tempo, $plano){
$pdo = conectar();
$tarifaFixa = $pdo->prepare("SELECT valor FROM tarifa_fixa WHERE origem = :origem AND destino = :destino");
$tarifaFixa->bindvalue(':origem',$origem);
$tarifaFixa->bindvalue(':destino',$destino);
$tarifaFixa->execute();
$tarifaFixa = $tarifaFixa->fetch(PDO::FETCH_ASSOC)['valor'];
if($plano == 'faleMais30'){
if($tempo > 30) {
$tempoExcedido = $tempo - 30;
$valorComPlano = $tempoExcedido * $tarifaFixa;
}
else {
$valorComPlano = 0;
}
$valorSemPlano = $tarifaFixa * $tempo;
}
else if($plano == 'faleMais60'){
if($tempo > 60) {
$tempoExcedido = $tempo - 60;
$valorComPlano = $tempoExcedido * $tarifaFixa;
}
else {
$valorComPlano = 0;
}
$valorSemPlano = $tarifaFixa * $tempo;
}
else if($plano == 'faleMais120'){
if($tempo > 120) {
$tempoExcedido = $tempo - 120;
$valorComPlano = $tempoExcedido * $tarifaFixa;
}
else {
$valorComPlano = 0;
}
$valorSemPlano = $tarifaFixa * $tempo;
}
$array = array($valorComPlano,$valorSemPlano);
return json_encode($array,true);
}
}
?>
TarifaTest
<?php
use App\Tarifa;
use PHPUnit\Framework\TestCase;
class TarifaTest extends \PHPUnit\Framework\TestCase {
public function testValorTempoMenorQuePlanoFaleMais30(){
$tarifa = new Tarifa();
$tarifa->calculaTarifa();
$this->assertEquals(0, $tarifa->calculaTarifa(011, 016,20, 'FaleMais30'));
}
}
?>
Ошибка
There was 1 error:
1) TarifaTest::testValorTempoMenorQuePlanoFaleMais30
include(../database/dbconect.php): failed to open stream: No such file or directory
C:\xampp\htdocs\Telzir\src\Tarifa.php:2
C:\xampp\htdocs\Telzir\src\Tarifa.php:2
C:\xampp\htdocs\Telzir\tests\TarifaTest.php:10
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
Итак, если я изменю включение в Тарифе. php, чтобы включить (./ database / dbconect. php), ошибка изменится на:
There was 1 error:
1) TarifaTest::testValorTempoMenorQuePlanoFaleMais30
Error: Class 'App\Tarifa' not found
C:\xampp\htdocs\Telzir\tests\TarifaTest.php:10
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
Но если я это сделаю, программа больше не работает.
Помогите мне, пожалуйста!