Как проверить контроллер Laravel, который читает информацию из файла .json - PullRequest
0 голосов
/ 03 апреля 2019

Я новичок в Laravel и PHPUnit.Я пытаюсь проверить контроллер, который читает файл .json, выполняет некоторые вычисления и возвращает результат, подобный этому [3,3,2,0.5].

Как я могу отправить файл .json или какое-либо значение в контроллер и проверить результаты обратной связи?

Заранее спасибо

контроллер:

namespace App\Http\Controllers;

class payController extends Controller
{
    public function index()
    {
        $ratio = [];
        $ratio1= [];
        $string = file_get_contents("input.json");
        if(!isset($string)){
            echo 'File is empty.';
        } else {
            $json_a = json_decode($string, true);

            $required_income = $json_a['required_income'];

            foreach ($json_a['sms_list'] as $json) {
                $ratio_value = $json['income'] * 100 / $json['price'];
                array_push($ratio, [$ratio_value, $json['price'], $json['income']]);
            }

            foreach ($json_a['sms_list'] as $json) {
                array_push($ratio1, [$json['price'], $json['income']]);
            }

            $count = count($ratio);
            rsort($ratio, 0);

            $smsPrice = [];
            for ($i = 0; $i < $count; $i++) {
                $price = $ratio[$i][1];
                $income = $ratio[$i][2];
                $divisionRequiredIncome = floor($required_income / $price);
                if ($divisionRequiredIncome > 0) {
                    for ($j = 0; $j < $divisionRequiredIncome; $j++) {
                        array_push($smsPrice, $price);
                    }
                    $required_income -= ($income * $divisionRequiredIncome);
                }
            }
            sort($ratio1, 1);
            for ($i = 0; $i < $count; $i++) {
                if ($required_income - $ratio1[$i][1] <= 0) {
                    array_push($smsPrice, $ratio1[$i][0]);
                    break;
                }
            }
        }
        echo '<pre>';
        var_dump($smsPrice);
    }
}

payControllerTest:

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;

use App\Http\Controllers\payController;

class payControllerTest extends TestCase
{
    /**
     * A basic unit test example.
     *
     * @return void
     */
    public function test_first()
    {
        $res = payController::index();
    }

}

input.json file:

{
    "sms_list": [
      {"price": 0.5, "income": 0.41},
      {"price": 1, "income": 0.96},
      {"price": 2, "income": 1.91},
      {"price": 3, "income": 2.9}
    ],
    "required_income": 8
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...