mysql 拉瑞威5.2:如何测试助手功能?

inn6fuwd  于 2022-11-21  发布在  Mysql
关注(0)|答案(2)|浏览(134)

我是laravel的新手。我已经阅读了laravel的测试文档,但是我似乎并不理解它。有人能指导我测试这个助手函数的步骤吗?
下面是函数。

function getUnreadInboxMessagesForAUserById($id)
{

    $past_period_months = Carbon::now()->subMonths(6);

    $message = App\Message::select("*")
    ->whereIn("conversation_id", App\Conversation::select("id")
    ->where([
        ["user_one", "=", $id],
        ["delete_user_one", "=", 0]
    ])
    ->where(function($query) {
        $query->where("created_at", ">", $user_one_convo_deleted_at)->orWhereNull("user_one_convo_deleted_at");
    })
    ->where(function($query) {
        $query->where("created_at", ">", $user_one_msgs_deleted_at)->orWhereNull("user_one_msgs_deleted_at");
    })
    ->orWhere(function($query) {
        $query->where([
        ["user_two", "=", $id],
        ["delete_user_two", "=", 0]
        ])
        ->where(function($query) {
        $query->where("created_at", ">", $user_two_convo_deleted_at)->orWhereNull("user_two_convo_deleted_at");
        })
        ->where(function($query) {
        $query->where("created_at", ">", $user_two_msgs_deleted_at)->orWhereNull("user_two_msgs_deleted_at");
        });
    })
    )
    ->where([
    ["is_seen", "=", 0],
    ["user_id", "<>", $id]
    ])
    ->whereNotIn("user_id", App\DeactivateAccount::select("user_id"))
    ->where(function($query) {
    $query->whereNotIn("user_id", App\User::select("id")
        ->where([
        ["flag", "=", 0],
        ["id", "=", $user_id]
        ])
        ->orWhereIn("user_id", App\User::select("id")
            ->where("id", "=", $user_id)
            ->whereIn("membership", ["admin","premium","free-premium","diamond"]))
        );
    })
    ->where(function($query) {
    $query->where("hard_delete", "=", 0)->orWhereNull("hard_delete");
    })
    ->where(function($query) {
    $query->where("deleted_from_receiver", "=", 0)->orWhereNull("deleted_from_receiver");
    })
    ->where(function($query) {
    $query->where("isflaged", "!=", 1)->orWhereNull("isflaged");
    })
    ->where("created_at", ">=", $past_period_months)
    ->orderBy("created_at", "desc")
    ->get()
    ->count();

    return $messages[0];
}

如果你能详细地列出这些步骤,那将非常有帮助。

0vvn1miw

0vvn1miw1#

用拉瑞维尔的思想家:

php artisan thinker

然后运行函数类教程

bihw5rsg

bihw5rsg2#

在应用程序文件夹内为助手函数创建单独的文件夹,假设助手文件名为common.php,路径为app/Helpers/Common.php
您可以创建一个服务提供程序并在该提供程序中加载文件,然后将其导入config/app.php中的提供程序,或者您可以尝试使用composer自动加载
如果要使用服务提供商
创建帮助器服务提供程序类:app/Providers/HelperServiceProvider.php并使用下面提到的代码

<?php

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    class HelperServiceProvider extends ServiceProvider
    {
        /**
         * Bootstrap the application services.
         *
         * @return void
         */
        public function boot()
        {
            //
        }

        /**
         * Register the application services.
         *
         * @return void
         */
        public function register()
        {   
            /**
             * Path to the helper file
             */
            require_once __DIR__ . '/../Helpers/Common.php';
        }
    }

如果要使用composer自动加载,请打开composer.json

"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Helpers/Common.php" // <---- ADD THIS PATH TO THE HELPER FILE
    ]
},

更新composer.json后,运行composer dump-autoload
我个人建议使用服务提供商。
正确导入所有内容后,您可以在项目中的任何位置使用getUnreadInboxMessagesForAUserById($id)函数。

相关问题