ftp
4 سال پیش توسط ftp مطرح شد
7 پاسخ

مشکل در تست نویسی

@hesammousavi
@nimageneral
@mhyeganeh
من یک تست نوشتم که یک مقداری رو با مقداری که در دیتابیس هست مقایسه کنه اما ارور دارم و فکر کنم به دیتابیس متصل نمیشه(مدل رو هم ساختم)

public function test_t2()
    {        $team=new User(['name'=>'ali']);
        $this->assertEquals("ali",$team->name);
    }
و در phpunit.xml هم اینا رو اضافه کردم
      <server name="DB_CONNECTION" value="mysql"/>
        <server name="DB_DATABASE" value="laravel"/>
و این ارور رو میده
Warning:       Your XML configuration validates against a deprecated schema.
Suggestion:    Migrate your XML configuration using "--migrate-configuration"!
1) Tests\Unit\ExampleTest::test_t2
LogicException: App\User::name must return a relationship instance.
/home/netwons/project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:443
/home/netwons/project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:420
/home/netwons/project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:375
/home/netwons/project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1637
/home/netwons/project/tests/Unit/ExampleTest.php:16

ثبت پرسش جدید
حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش مطرح شد
0

این تستت مقداری رو با مقدار دیتابیس مقایسه نمیکنه چون اصلا داده ای در دیتابیس ذخیره نمیکنه که بخواد اونو با مقداری از دیتابیس مقایسه بکنه حتی متد save رو هم برای مدل مربوطه فرا خوانی نکردین. بعد فراخوانی متد save باید رکورد ثبت شده رو بخونی بعد عمل مقایسه رو انجام بدی. چک کن ببین جداولت مایگریت شدن. فعلا برای امتحان مقادیر فایل phpunit.xml رو به حالت قبل برگردون


ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
0

@hosseinshirinegad98
@nimageneral
@nimageneral
الان من این تست رو در unit مینویسم ولی متدد assertdatabasehas رو نمیشناسه

$this->assertDatabaseHas('users', [
            'email' => 'ne@gmail.com'
        ]);
ارور
Error: Call to undefined method Tests\Unit\ExampleTest::assertDatabaseHas()

ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
0

@hosseinshirinegad98
@mhyeganeh
@endworld
کدم اینه

$mail="netwons123@yahoo.com";
        $user=new User([
            'name'=>"ali",
            'email'=>$mail
        ]);
        $user->save();
        $this->assertEquals($mail,$user->email);

ارور

Error: Call to a member function connection() on null

سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 4 سال پیش مطرح شد
0

@mehdisut
سلام. طبق تغییراتی که لاراول داشته namespace کلاس TestCase به PHPunit\Framework\TestCase تغییر کرده که باعث میشه کل اپلیکیشن لاراول بوت (راه اندازی ) نشه.
فک میکنم اگر namespace رو به این حالت جایگزین کنید مشکلتون حل میشه.

use Tests\TestCase;

توضیحات


ftp
تخصص : ساده
@ftp 4 سال پیش آپدیت شد
0

@SobhanDadkhah
الان ایمیل من رو null میده $user->email
و این ارور رونمایش میده

Failed asserting that null matches expected 'netwons123@yahoo.com'.

سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 4 سال پیش مطرح شد
0

@mehdisut خوب باید بررسی کنید ببینید چرا نال میده. یوزری ساخته میشه که دسترسی داشته باشید بهش؟
یا اصلا به دیتابیس درست وصل نیست ؟ اطلاعات دیتابیس صحیحه ؟
پیشنهاد میکنم نحوه ستاپ کردن و راه اندازی تست ها رو با یک ویدیو نگاه کنید احتمال 90 درصد مشکلتون حل میشه .


ftp
تخصص : ساده
@ftp 4 سال پیش مطرح شد
0

@SobhanDadkhah
@nimageneral
@mhyeganeh
والا من هر کاری کردم نشد میشه شما یه تستی کنید ممنون میشم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام