問題タブ [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 - find() を含む静的な雄弁なモデルのメソッドをモックする
私は一般的な Mockery と PHP-Unit のチュートリアルに従っています。これには、PHP-Unit と Mockery を使用して Laravel をテストするための Jeffrey Way の紹介が含まれます。ただし、このアプリでは、Eloquent に依存していても問題ないので、リポジトリ クラスを作成しません。
Widget モデルのインスタンス メソッドをうまくモックできます。ただし、Route:model バインディングを使用しており、コントローラーの show($widget) メソッドをテストするときにモデルの find() メソッドをモックする方法が正確にはわかりません。
https://github.com/padraic/mockery/wiki#mocking-public-static-methodsドキュメントを読んだところ、「エイリアス」プレフィックスをモックするクラスの前に配置できることがわかりました。しかし、私はこれを機能させることもできないようです。
ここにroutes.phpがあります...
これが(短縮された)コントローラーです...
そして、これがテストフィクスチャです。
testShow メソッドに次のエラーがあります: Call to undefined method Widget::find()
考え?
laravel - Codeception sqlite:Laravel 4 の Mockery に対するメモリ
Codeception には のオプションがあることに気付きましたsqlite:memory
。このような場合、 Mockeryをオプトアウトする必要がありますか?
私が理解しているのは、Mockery を使用すると、データベースへのアクセスを回避するためのテストが可能になるということです。前述の Codeception のオプションを使用すると、データベースにサンプル データをシードし、それをメモリにヒットさせることができます。
これを Selenium2 と PhantomJS と組み合わせると、いくつかのテストで Laravel 4 で 15 秒から 1 秒になりました。
unit-testing - MockeryによるLaravelコントローラーのテスト
私はコントローラーのアクションをlaravelでmockeryでテストしようとしています。私はすでにこのチュートリアルをここで読んでいます:
http://culttt.com/2013/07/15/how-to-structure-testable-controllers-in-laravel-4/
コンストラクターで DI を次のように使用します。
私の問題は、コントローラーの次のコードです。
Mockery をモック フレームワークとして使用しようとしています。私の質問は、 $this->sentry->getUserProvider() のような呼び出しをモックする方法です (Cartalyst Sentry は高度な認証バンドルです)。ユーザーモデルをモックするには、次のように記述します。
Userprovider をモックする方法、またはこれを別の方法で処理する必要がありますか? IDに応じてユーザーの詳細を取得している場合、UserControllerをテストしたいと思います。