問題タブ [mockery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Laravel テスト - Mockery で例外をスローする
私はLaravelと単体テスト全般に非常に慣れていません。AccountController のいくつかのテストを作成しようとしていますが、障害が発生しました。
サイト内のユーザーとグループを処理するために Sentry を使用しています。コントローラーが Sentry によってスローされた例外を適切に処理していることをテストしようとしています。したがって、ログイン POST を処理するコントローラー メソッドは次のようになります。
authRepository は、Sentry を使用して認証を処理する単なるリポジトリです。ここで、電子メール アドレスが指定されていない場合に LoginRequiredException がスローされ、ユーザーにエラー メッセージが表示されることをテストしたいと思います。これが私のテストです:
ただし、テストはパスしません。何らかの理由で吐き出すのは次のとおりです。
andThrow() メソッドの使い方が間違っていますか? 何が起こっているのかについて誰かが光を当てることができれば、それは大歓迎です。
前もって感謝します!
php - Laravel Dependency Injection: 必要なときは? Facade をモックできるのはいつですか? どちらの方法の利点ですか?
私はしばらくLaravelを使用しており、テスト可能なコードである依存性注入について多くのことを読んでいます。Facades と Mocked Objects について話すとき、私は混乱するところまで来ました。2 つのパターンが表示されます。
これが私の投稿モデルです。実行Post::all();
して、ブログからすべての投稿を取得できました。今、私はそれを自分のコントローラーに組み込みたいと思っています。
オプション #1: 依存性注入
私の最初の本能は、Post
モデルを依存関係として注入することです。
私の単体テストは次のようになります。
オプション #2: ファサード モック
私の単体テストは次のようになります。
私は両方の方法を理解していますが、なぜ、またはいつ一方の方法を他方よりも優先して使用する必要があるのか を理解していません。たとえば、Auth
クラスで DI ルートを使用しようとしましたが、機能しないため、Facade モックを使用する必要があります。この問題に関する石灰化は大歓迎です。
unit-testing - Laravelの雄弁な水和関係を嘲笑する
リポジトリを持つクラスをテストしようとするたびに、同じ質問がありました。
Eloquent クラスが、クエリの実行後に保護された配列関係属性を「水和」する場合、理論的には、この属性にモック コレクション/結果セットを設定することができるため、テストで$user->profiles
(括弧なしの属性) のようなことを言うと、モック データを取得できます。モデルを簡単にテストします。
__call
私の質問は次のとおりです。「属性が見つかりません」というエラーメッセージを発行せずに Mockery にメソッドを呼び出させる方法はありますか?
これまでのところ、これを行う唯一の方法は、属性をモック オブジェクトに直接適用することです。このアプローチの問題は、この方法では、データがリポジトリから読み取られたかどうかを主張できないことです
例が必要な場合は、質問を更新できますが、私は非常に明確だったと思います;)
よろしくお願いします
php - Redirect::back をあざけりで避ける
Laravel 4 のパスワード リマインダーに関するいくつかのテストを作成しようとしています。
これが実行されるのを避けたい:
そして私は試しました:
そして、私はエラーが発生しています:
PHP 致命的なエラー: 非オブジェクトでメンバー関数 with() を呼び出す
呼び出しにパラメーターがある場合に嘲笑を適応させる方法を見つけましたが、この問題を回避する方法はわかりませんでした。
誰でも私を助けることができますか?
php - あざけりを正しく使用しているかどうかわからない
私は初めてモッキング/モッカリーに取り組んでいますが、次のテストが実際に私のコードに触れているのか、それとも私が作成したモックをテストしているだけなのかわからないのですか? また、このコードは名前がそのままの名前であるにもかかわらず、リポジトリ パターンに適切に適合していないことに気付きました..私はそれに取り組みます。
クラス:
そして私のテスト:
これは私のクラスをテストする適切な方法ですか? それとも、これは嘲笑/嘲笑の誤った使用ですか?