Имам необработен PHP код за цикъл for-each. Използвам php 7.2
и PHPUnit 8
.
ето името на файла app.php
и кодът е даден по-долу: Тук имам друго извикване CalculatorAPI()
, което изисква извикване на API - имам нужда и от макет.
$list = file_get_contents('input.txt');
$inputData = explode("\n", trim($list));
function main ( $inputData ) {
foreach ($inputData as $row) {
if (empty($row)) break;
//explode row
$p = explode(",", $row);
// retrieve bin, amount and currency
$p2 = explode(':', $p[0]);
$currency = trim($p2[1], '"}');
// Class which needs a mock up because it requires API call
$calApi = new CalculatorAPI();
$result =$calApi->getFinalResult($currency);
echo $result;
print "\n";
}
}
main( $inputData );
Имайте предвид, че: в input.txt
имам {"currency":"EUR"}...
за получаване на списък с валути.
Сега трябва да напиша някакъв код за PHPUnit test
:: тук е тестовият файл
<?php
require_once __DIR__."/../app.php";
use PHPUnit\Framework\TestCase;
class AppTest extends TestCase
{
public function testApp() : void
{
$calAPI = $this->createStub(CalculatorAPI::class);
$calAPI->method('getFinalResult')
->willReturn(1);
$result = main($this->data, $calAPI);
$this->assertEquals(1, $result);
}
}
когато стартирам това, той изпълнява файла. Как да напиша код за raw PHP
? Освен това трябва да стартирам теста офлайн, въпреки че изисква извикване на API.