Мой проект 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, пожалуйста, просто дайте мне знать.