カテゴリー
Laravel

UnitTestでEloquentの日付情報を操作するとエラーになるンゴ…

LaravelのEloquentをUnitTestするときに、日付の属性をセットしようとすると下記のエラーになった。

 Call to a member function connection() on null

  at vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1342
    1338|      * @return \Illuminate\Database\Connection
    1339|      */
    1340|     public static function resolveConnection($connection = null)
    1341|     {
  > 1342|         return static::$resolver->connection($connection);
    1343|     }

データベースのコネクションを探しているようや。これは、日付の属性をセットするときは、データベースへのアクセスが必要になるためらしいんやが…。

    /**
     * Get the format for database stored dates.
     *
     * @return string
     */
    public function getDateFormat()
    {
        return $this->dateFormat ?: $this->getConnection()->getQueryGrammar()->getDateFormat();
    }

なるほど、日付のフォーマットをデータベースタイプから参照してくれる機能のおかげみたいや。

    /**
     * Set the date format used by the model.
     *
     * @param  string  $format
     * @return $this
     */
    public function setDateFormat($format)
    {
        $this->dateFormat = $format;

        return $this;
    }

フォーマットは直接指定できるようなので、Eloquentで指定しておけばええみたいや。

これで、データベースのコネクションエラーにならずにEloquentの日付属性を利用するようなUnitTestも動くようになったで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です