問題タブ [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 - モック フレームワークは、名前と型が異なるクラスを返します
このコードでタイプヒントを満たすモックを作成しようとしています(Mockery):
またはこれ(PHPUnit):
しかし、返されるモックはMockery\Mock Object
orと呼ばれMock_iFileSystemWrapper_a5f91049
ます。どちらのフレームワークでもまったく必要なもののインスタンスではない場合、これをどのようにタイプチェックすればよいでしょうか?
モック フレームワークが実際のクラスをロードしようとしているのはなぜですか? 実際のクラスが必要な場合は、実際のクラスを含めます。
この問題は、テストを書いているときに何度も私の作業を遅らせてきました。私は型ヒントをウィンドウの外に放り出し、代わりにクラス名をチェックするか、モックを使用するのが面倒なので、単純に本番オブジェクトを使用しようとしています。
php - 単体テスト Symfony2
sf2 関数を単体テストするために Mockery を使用しようとしています。初めての試みで苦労しています。
まず、セキュリティ コンテキストを使用するクラスをテストしてみます。
次のようなtestsetSecurityContext関数を作成します。
単体テストを実行すると、次のエラーが表示されます。
testsetSecurityContext
Mockery\Exception: メソッド isGranted は final とマークされており、そのようなメソッドが定義されたモック オブジェクトを生成することはできません。代わりに、このオブジェクトのインスタンスを Mockery に渡して、部分的なモックを作成する必要があります。
したがって、それに応じてテスト関数を変更します。
今、私はそのエラーを受け取ります:
testsetSecurityContext
ErrorException: Catchable Fatal Error: Argument 1 passed to Symfony\Component\Security\Core\SecurityContext::__construct() must implement interface Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface , none given, called in ..MenuBuilderTest.php on行 91 および ..Symfony\Component\Security\Core\SecurityContext.php 行 41 で定義
したがって、コードを再度変更します。
そして、別のエラーが発生します:
testsetSecurityContext
ErrorException: Catchable Fatal Error: Argument 2 passed to Symfony\Component\Security\Core\SecurityContext::__construct() must implement interface Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface , none given, ...\MenuBuilderTest で呼び出されます. 94 行目の php で ...\Symfony\Component\Security\Core\SecurityContext.php 行 41 で定義されています
私は最終的に:
そして、私はそのエラーが発生するので、それはまだOKではありません:
testsetSecurityContext
ErrorException: Catchable Fatal Error: Atos\Worldline\Fm\Integration\Ucs\EventFlowAnalyser\Menu\MenuBuilder::setSecurityContext() に渡される引数 1 はSymfony\Component\Security\Core\SecurityContextのインスタンスである必要があり、与えられたMockery_50c5c1e0e68d2のインスタンスである必要があります。 ..\MenuBuilderTest.php の 106 行で呼び出され、..\MenuBuilder.php の 140 行で定義されています。
8行の機能をテストするために100行のテストを行う前に、本当に助けていただければ幸いです...
php - Mockery 使用時の不完全なテスト
メソッドがphpで別のメソッドを呼び出すことをテストしているとしましょう
このテストを PHPUnit で実行すると、テストに PHPUnit アサーションがないため、テストが不完全であると報告されます。ただし、これは有効なテストであり、メソッドが呼び出されない場合はエラーになります。これが有効なテストであることをPHPUnitに認識させるための良い解決策はありますか?
php - 必要なメソッドが呼び出されない場合、Mockery/Etsy PHPExtensions はテストに失敗しません
DoesNothing
クラスがモッククラスを使用しないか、必要なメソッドを呼び出さないため、実行すると失敗すると予想される以下のコードがあります。
しかし、実行すると合格します。「メソッド remove は呼び出されませんでした」などと言うと思います。
何が間違っている可能性がありますか?Mockery が PHPUnit に話しかける方法と何か関係がありますか?
ありがとう、マーティン
編集: Etsy の PHPExtensionsを使用して PHPUnit に統合していることにも言及する必要があります。
php - このモック オブジェクトにはモック メソッド shouldRecieve() が見つかりません
Laravel と PHPunit で padraic/mockery パッケージを使用しています。私はPHP 5.4.3を使用しています。
コントローラーをテストするためにモック オブジェクトを作成しようとすると、次のエラーが表示されます。
私のコードは以下のとおりです。私はチュートリアルをかなり厳密にフォローしていますが、モックされたオブジェクトが適切にインスタンス化されていないように見える理由を理解できません。
php - Illuminate\Routing\Redirector::to("user/login") に一致するハンドラが見つかりません
laravel 4で引数を使用してファサードをモックするにはどうすればよいですか? たとえば、ユーザーコントローラーと「ログイン」メソッドをテストしようとしています。
私のコントローラーメソッド
動作しないリダイレクト テスト
次の例外が発生しています。「user/login」パラメーターを Redirect モックに挿入する方法がわかりません
Mockery\Exception\NoMatchingExpectationException : Illuminate\Routing\Redirector::to("user/login") に一致するハンドラが見つかりません
php - Mockery shouldReceive()->once() が機能していないようです
特定のメソッドが少なくとも 1 回呼び出されることを Mockery にアサートさせようとしています。
私のテストクラスは次のとおりです。
ご覧のとおり、setUri が呼び出されるという期待を (うまくいけば) 作成するテストが 1 つあります。他のコードが関与していないため、それを呼び出すことができるとは想像できませんが、それでも私のテストは成功します。誰でも理由を説明できますか?