почему «Вызов функции-члена connection () со значением NULL» в PHStrom, хотя тот же код работает в коде Visual Studio: PHPUnit - PullRequest
0 голосов
/ 26 января 2020

Мой проект Laravel версия 5.8. Я использовал Microsoft Visual Code (VSCode) для целей разработки. Недавно я пытаюсь использовать версию PHPStrome 2017. Но у меня проблемы с модульным тестированием. В VSCode я использую расширение под названием "btter- php -unit". Теперь проблема в том, что те же тестовые случаи работают нормально в VSCode, но для PHPStrome выдает ошибку:

Call to a member function connection() on null

Full Stack Trace

Error : Call to a member function connection() on null
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1247
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1213
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1047
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:964
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1000
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:953
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1614
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1626
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\app\payment\Payment_Mobile_Repo_Impl.php:79
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\tests\payment\U_PaymentMobile_Test.php:217
 E:\Drive_H\recover\NTFS_3\backUp\Documents\1.projects\Alumni\code\backend\tests\payment\U_PaymentMobile_Test.php:43

Я посмотрел эти два вопроса:

Laravel 5 Модульный тест - вызов соединения функции-члена () со значением NULL

Вызов для функции-члена connection () при ошибке необъектного объекта на Laravel 5

Начиная со второго вопроса, я использовал это $app->withEloquent(); в своем bootstrap\app.php. Но результат тот же.

Класс модели

namespace App\payment;

use Illuminate\Database\Eloquent\Model;

class PaymentMobile extends Model
{
    //
}

Метод репозитория:

public function approve_mobile_payment($user_id, $id){
        $status = "fail";
        try{
            $paymentMobileOrgin = PaymentMobile::find($id);
            $paymentMobileOrgin->status = 1;
            $paymentMobileOrgin->update();
            $status = "ok";
        }catch (Exception $e){
            error_log("\nError in Mobile Payment Approval. \n");
        }
        return $status;
    }

Тестовый класс:

    public function testBasicTest()
    {
        error_log($this->approve_payment(4, 
        $this->assertTrue(true);
    }

    public function approve_payment($user_id, $id)
    {
        error_log("\nTest Started : \n");
        $repoPayment = new Payment_Mobile_Repo_Impl();
        $pt = new PaymentMobile();
//        $pt = $this->findOnePaymentType($id);
        $status = $repoPayment->approve_mobile_payment($user_id, $id);
        return $status;
    }

Также возникают некоторые проблемы с использованием namespace. Для VSCode и PHPStrome требуется два разных типа пространства имен.

//PHPStrome
// use sample;
//  use PHPUnit\Framework\TestCase;

//VS code.
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

Если я использую пространство имен VSCode в PHPStrome, отображается следующая ошибка:

Fatal error: Declaration of Illuminate\Foundation\Testing\TestCase::setUp() must be compatible with PHPUnit\Framework\TestCase::setUp():

Мой вопрос: почему мне нужно использовать два разных пространство имен и почему не тест не работает?

GitHub Link: Проект в GitHub

Если вы wi sh, После исправления, вы можете pu sh, пожалуйста, просто дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...