質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

Q&A

解決済

1回答

489閲覧

laravel5.6 phpunit実行時のsetRoundsについて

secon

総合スコア5

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

0グッド

0クリップ

投稿2018/10/31 02:45

編集2018/10/31 04:51

環境

  • MacOS HighSierra 10.13.6
  • laravel 5.6
  • php 7.2.4
  • phpunit 7.4.3

前提

laravel5.6で開発を行なっています。
テストを実行しようとlaravelのドキュメントを参考にしてテストを作成し、phpunit コマンドを実行したところ下記のエラーが発生します。

$ phpunit PHPUnit 7.4.3 by Sebastian Bergmann and contributors. EE 2 / 2 (100%) Time: 340 ms, Memory: 12.00MB There were 2 errors: 1) Tests\Feature\ExampleTest::testBasicTest Error: Call to undefined method Illuminate\Hashing\ArgonHasher::setRounds() /var/www/vendor/laravel/framework/src/Illuminate/Support/Manager.php:146 /var/www/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:223 /var/www/tests/CreatesApplication.php:21 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:91 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:68

php

1<?php 2 3namespace Tests; 4 5use Illuminate\Support\Facades\Hash; 6use Illuminate\Contracts\Console\Kernel; 7 8trait CreatesApplication 9{ 10 /** 11 * Creates the application. 12 * 13 * @return \Illuminate\Foundation\Application 14 */ 15 public function createApplication() 16 { 17 $app = require __DIR__.'/../bootstrap/app.php'; 18 19 $app->make(Kernel::class)->bootstrap(); 20 21 Hash::setRounds(4); 22 23 return $app; 24 } 25}

本題

CreateApplication.php で呼び出そうとしている Hash::setRounds()が定義されていないというエラーですが、対応に悩んでいます。

質問は2点です。

  1. setRoundsをコメントアウトする対応で合っているのか
  2. 使用するHashクラスの切り替え

(1)
調べたところ、setRounds()は BcryptHasherクラスで定義されているメソッドです。ですが、デフォルトだと ArgonHasherクラスから呼び出してしまっているようです。

setRounds()をコメントアウトすればテスト自体は実行できますが、 ArgonHasherクラスではなく BcryptHasherクラスを使用するよう切り替えた方がよいのではないか、と感じています。どちらで対応すべきでしょうか?

(2)
質問(1)で切り替えが必要な場合はどこで切り替えをすればよいのでしょうか、という質問です。切り替えの必要がなくても構造の理解のために知っておきたいと考えています。

補足

情報不足やわかりづらい部分などがありましたらご指摘ください。
また、片方のみの回答などでも非常に嬉しいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

(1) それはテストの目的によるのでなんともいえません。通常は本番と同じにした方がいいですが、setRounds()でデフォルトより小さな値を指定しようとしているので、まともにやると時間がかかりすぎる等であえてそうしたいとかでしょうか?

(2) 使用するドライバーはconfig/hash.phpで設定します。

php

1 /* 2 |-------------------------------------------------------------------------- 3 | Default Hash Driver 4 |-------------------------------------------------------------------------- 5 | 6 | This option controls the default hash driver that will be used to hash 7 | passwords for your application. By default, the bcrypt algorithm is 8 | used; however, you remain free to modify this option if you wish. 9 | 10 | Supported: "bcrypt", "argon" 11 | 12 */ 13 14 'driver' => 'bcrypt',

投稿2018/10/31 04:34

crhg

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

secon

2018/10/31 05:00

(1) CreatApplication.php のコードがデフォルトでこうなっていたので意図はわかりかねます、すみません・・・ (2) config/hash.php の変更でphpunitが動作するようになりました。 Hash Driver に argon を使用すると phpunit が使えなくなるのは疑問に感じますが、laravel 自体のコードを変更するより config ファイル群を設定した方が利用方法としては正しい気がするので(2)の対応をすることにしました。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問