🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۹ امیر محمد وثوقی
مشکل در اجرای تست با لاراول
جامعه پی اچ پی ایجاد شده در ۱۷ مرداد ۱۴۰۲

سلام وقتتون بخیر باشه

من از لاراول استفاده میکنم و هنگامی که میخوام از $this->post استفاده کنم ارور میده همچنین از $this->seeJsonStructure

ممنون میشم راهنمایی کنید

متن ارور

2) Tests\\Unit\\API\\V1\\Users\\UsersTest::test_should_create_a_new_user
Error: Call to undefined method Tests\\Unit\\API\\V1\\Users\\UsersTest::post()

این هم تست من هست

    public function test_should_create_a_new_user()
    {
        $response = $this->post('v1/users', [
            'full_name' => 'Ehsan Masoumipour',
            'email' => 'ehsan@gmail.com',
            'mobile' => '09121212121',
            'password' => 'password'
        ]);
        $this->assertEquals(201, $response->status());
        $this->seeJsonStructure([
            'message' => 'user created!!',
            'status' => true,
            'data' => [
                'full_name' => 'Ehsan Masoumipour',
                'email' => 'ehsan@gmail.com',
                'mobile' => '09121212121',
                'password' => 'password'
            ]
        ]);
    }
امیر محمد وثوقی ۱۷ مرداد ۱۴۰۲، ۰۸:۳۶

سلام امیرمحمد عزیز

پیشنهاد میکنم این موارد رو در Feature تست‌ها پیاده کنید.

برای استفاده از ریکوئست‌ها باید کلاس خود لاراول برای تست کیس رو استفاده کنید که نیم اسپیس زیر هست:

use Tests\\TestCase;
احمدرضا فاطمی کیا ۱۷ مرداد ۱۴۰۲، ۱۰:۲۷

این هم تست من هست

    public function test_should_create_a_new_user()
    {
        $response = $this->post('v1/users', [
            'full_name' => 'Ehsan Masoumipour',
            'email' => 'ehsan@gmail.com',
            'mobile' => '09121212121',
            'password' => 'password'
        ]);
        $this->assertEquals(201, $response->status());
        $this->seeJsonStructure([
            'message' => 'user created!!',
            'status' => true,
            'data' => [
                'full_name' => 'Ehsan Masoumipour',
                'email' => 'ehsan@gmail.com',
                'mobile' => '09121212121',
                'password' => 'password'
            ]
        ]);
    }
امیر محمد وثوقی ۱۷ مرداد ۱۴۰۲، ۱۴:۰۷

e840-Screenshot from 2023-08-08 17-46-35.png

سلام جناب فاطمی کیا وقتتون بخیر این تایع رو نمیشناسه

امیر محمد وثوقی ۱۷ مرداد ۱۴۰۲، ۱۴:۱۸

من فکر کردم از لاراول دارید اسفاده میکنید.

به همون حالت قبلی برگردونید و از متد call باید اسفاده کنید.

c3e4-سون-لرن (7).png

احمدرضا فاطمی کیا ۱۷ مرداد ۱۴۰۲، ۱۴:۵۲

بله از لاراول استفاده میکنم منتها اسم اون تابع رو در لاراول نمیدونم

امیر محمد وثوقی ۱۷ مرداد ۱۴۰۲، ۱۴:۵۸

خب پس همون کاری که گفتم انجام بدید.

متد بررسی ساختار جیسون نامش چیز دیگس:

https://laravel.com/docs/10.x/http-tests#assert-json-structure

احمدرضا فاطمی کیا ۱۷ مرداد ۱۴۰۲، ۱۵:۰۴

با تشکر از راهنمایی شما جناب فاطمی کیا

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

2a6c-Screenshot from 2023-08-08 19-21-21.png


Route for [v1/users] has no action.

این هم از روت web.php

Route::prefix('v1')->group(function (){
    Route::post('/users');
});

و اینکه من فایل routes رو ورژن بندی نکردم و در این مسیر مربوط به web.php هستش راستش نتونستم که فایل هایی که در ورژن بندی اضافه میشه رو در bootstrap/app.php تعریف کنم

امیر محمد وثوقی ۱۷ مرداد ۱۴۰۲، ۱۵:۵۷

سلام امیر جان، لطفاً سورس کدتون رو روی گیتهاب بزارید و لینکش رو بفرستید تا بررسی کنیم.

صادق برزگر ۱۷ مرداد ۱۴۰۲، ۱۶:۵۳