問題タブ [zend-test]
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 - Zend Framework 2 - 単体テスト
チュートリアル に示されているような単純なアクセス ユニット テストを作成したいと考えています。
私のプロジェクトはZFCUser
認証に使用します。
その結果、私の (明らかに認証されていない) テスターHTTP response
は、予想される 200 ではなく、302 を取得します。
私がそれについて何ができるか考えていますか?ありがとう!
チュートリアルのコードは次のようになります。
php - データベース権限が制限されているときにZendFrameworkモデルをテストするにはどうすればよいですか?
私は、ややユニークな方法でデータベースに接続するPHP(Zend Framework 1.12.1)アプリケーションに取り組んでいます。
基本的に、私にとって「ブラックボックス」であるOracleデータベースがあります。行またはテーブルを直接選択、更新、挿入、または削除する権限がありません。データベースビューへのアクセスのみが許可されており(選択のみ)、データを挿入/更新/削除する場合は、1つ以上のストアドプロシージャを呼び出す必要があります。実際のテーブル構造が何であるかはわかりません。また、誰も私にアクセスを許可することはないと思います。
ZFは、アプリケーションがデータベースで完全な特権を持っていると想定しているように見えるため、これらすべてにより、モデルの単体テストが非常に困難になります(モデルの記述は言うまでもありません)。(これが、これまでモデルの手動テストのみを行った理由であり、モデルはやや珍しいものです。)
私のアプリケーションは動作しますが、手動テストにうんざりしています。
他の誰かが以前にこの状況にあったことがありますか?データベース権限が制限されている環境で自動PHPUnitテストを実装するための具体的な手順をお勧めしますか?私はすでにdbadminに、というストアドプロシージャを提供するように依頼しましたresetTestData()
。これにより、毎回一貫した状態からテストを実行できるようになりますが、ZFではそのストアドプロシージャを使用してテストすることはできません。 /または分解します。どうやら、各テストの前にデータセットをZend_Test_PHPUnit_DatabaseTestCase
試行し、データを取得してデータベースに再入力するためにtruncate
呼び出します。getDataSet()
回避策?
php - PHPZF2ユニットテストのディスパッチ方法が非常に遅い
ZF2で書かれた大きなサイトをテストする必要があります。443のテストと約10000のアサーションがあります。コードカバレッジを使用したテストには6時間かかります。私は問題を見つけたと思います:コントローラーのテストでは、AbstractHttpControllerTestCaseのディスパッチメソッドを使用します。ディスパッチメソッドの実行時間は、各テスト後に増加しています(数分の1秒から数十秒)。
ZF 2.1.3、PHPUnit 3.7、PHP_CodeCoverage 1.2、Xdebug v2.2.1、PHP5.4.7を使用しています。
私の派遣方法:
parent :: dispatchは、AbstractHttpControllerTestCaseのメソッドです。
テストのサンプル:
助けてください。ありがとう。
アップデート:
プロセス分離と約15分で実行されたテスト(コードカバレッジなし)を使用していますが、スキップとしてマークされたテストでエラーが発生します:
phpunit - 実クラスを置き換えるPHPUnitモックオブジェクト
Zend_Test で実行されているテスト スイートにいくつかのテストがあります。
1 つのテストは、Foo_Bar_Baz
そのクラスの依存関係として PHPUnit の MockBuilder を介してのモックを作成します。現在のテストではFoo_BAR_baz
(大文字と小文字の変更は意図的であり、オートロードのために必要です)、クラスではなくモックのインスタンスを取得していますが、これは明らかに機能しません。
var_dump
オブジェクトに対してaをclass Foo_Bar_Baz#27115(0) { }
実行すると、モックのインスタンスが作成されているように見えます。
モックで の大文字と小文字を修正すると、期待どおりに機能します。オブジェクトのモックでこの動作を見たことはありません。何らかの理由で、モック化されたクラスが PHP にロードされているため、次のテストで実際のオブジェクトをインスタンス化しようとすると、代わりにモックがインスタンス化されます。なぜこれが起こるのでしょうか?