問題タブ [phpspec]

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.

0 投票する
1 に答える
820 参照

php - phpspec を使用した API ラッパーのテスト

TDD と phpspec を使用して API クラスのラッパーを作成しようとしています。

ClientREST API からのデータの要求/取得を処理するクラスを作成しました。このクラスは、いくつかのEntityクラスの 1 つにマップされるため、ORM のように動作します。

TDDでアプリケーションをテストして拡張するようになったので、少し行き詰まっています。これはClientエンティティ クラスの依存関係であるため (独自の子オブジェクトを要求できるようにするため)、これをモックするのに苦労しています。

たとえば、エンティティの 1 つ は次のComic.phpようになります。

簡潔にするために、 の単純化されたダウン バージョンはClient.php次のようになります。

ComicSpec.phpでは、例として、it_gets_all_characters()ルックのテストはどのように行われるのでしょうか?

これが理にかなっており、必要に応じてさらに情報を提供できることを願っています。

ご覧いただきありがとうございます。

0 投票する
1 に答える
1082 参照

php - Phpspec テスト クラス コンストラクター

Laravel プロジェクトで Phpspec を使い始めたところです。

私がテストしているクラスには、次のスキーマがあります。

非常に単純化されているため、実際のコードは含めません。パラメータが無効な場合は例外がスローされますが、これをコードで更新したい場合はお知らせください。そして、仕様クラスは次のとおりです。

無効な引数に対して例外がスローされていることを確認できましたが、コンストラクトの検証に合格し、有効な場合は値を返すことを確認したいと考えています。

私はドキュメントを読みましたが、これを達成する方法を見つけることができませんでした.BDDを完全に理解していないと思います.

この種のテストは単体テストなので、動作テストとは別にする必要がありますか?

0 投票する
2 に答える
784 参照

php - Windows CMD から phpspec を実行すると、プロジェクト ルートではなく vendor/bin に spec および src フォルダーが作成されます。

最近、phpspec と gulp について学んでいて、それらをワークフローに統合することにしました。composer 経由で phpspec をインストールすると、次のファイル構造が得られます。

  • ベンダー
    • 置き場
      • phpspec

より多くのファイルがありますが、フォルダがありますが、これらは関連しています。

私のCMDでは、現在プロジェクトのルートを指して実行しようとしています:

ただし、エラーが表示'vendor' isn't recognizes as internal or external command... されるので、bin フォルダーに移動してcd vendor/binから実行するphpspecと、実際に機能します。ただし、クラスを記述しようとするとphpspec describe SeatsHandler、ルートディレクトリではなくファイルが作成され、vendor/binフォルダー内に作成されます。

  • ベンダー
    • 置き場
      • phpspec
      • スペック
      • ソース

私はそれをどのように設定して読むことができるかを見ようとしましたphpspec.yml. メインフォルダーにディレクトリとともにそのようなファイルを作成しましたapp(アプリディレクトリを取り除きたいです):

このファイルをメイン ディレクトリに配置しようとしましたが、うまくいきませんでした。以前と同じ結果が得られました。このファイルも移動しようとしましvendor/binたが、役に立ちませんでした。

phpspec にファイルをルート ディレクトリ内ではなくルート ディレクトリに作成させるにはどうすればよいvendor/binですか? また、なぜ無視するのphpspec.ymlですか?

編集:

phpspec.ymlmyを次のように変更することで、なんとか機能させることができました。

そして入れvendor/binます。vendor/binただし、 CMD でディレクトリ内に移動せずに phpspec を実行するにはどうすればよいですか?

0 投票する
1 に答える
147 参照

laravel-4 - phpspec 入力ファイルを開けませんでした

composer を使用して Laravel プロジェクトに phpspec をインストールしましたが、実行しようとすると次のphpspecエラーが発生します。

からエイリアスなしで実行しようとすると同じですvendor/bin/phpspec

私は何が欠けていますか?

0 投票する
3 に答える
2068 参照

php - PHPSpec スタブでメソッドを 1 つだけモックする

さて、パッケージの 1 つを PHPSpec テストに移行しようとしていますが、すぐにこの問題に遭遇しました。パッケージは shoppingcart パッケージなので、カートに 2 つのアイテムを追加すると、カートのカウントが 2 になることを簡単にテストしたいと思います。しかしもちろん、ショッピングカートに同じアイテムを 2 つ追加すると、カートに新しいエントリはありませんが、元のアイテムの「数量」は 2 になります。異なるサイズ。そのため、各アイテムは、その ID とオプションに基づいて、一意の rowId によって識別されます。

これは、rowId (add()メソッドによって使用される)を生成するコードです。

今、私は次のようにテストを書きました:

しかし問題は、メソッドに対して両方のスタブが返さnullれることgetId()です。だから私はwillReturn()そのメソッドの設定を試みたので、私のテストは次のようになりました:

しかし、今ではエラーが発生し、予期しないメソッドが のように呼び出されていることがわかりますgetName()。したがって、呼び出される CartItem インターフェイスのすべてのメソッドに対して同じことを行う必要があります。

これで動作します。テストは緑色です。しかし、それは間違っているように感じます...何か不足していますか、それともPHPSpecの制限ですか?

0 投票する
1 に答える
1410 参照

php - PHPSpec と Laravel

Eloquent メソッドにアクセスしたり使用したりできない場合、PHPSpec を使用する意味は何ですか?

例: ($this は EloquentProductモデルを参照します)

これはメソッド内では機能せず、さまざまな Eloquent CollectionaddPropertyおよびModel 関数への呼び出しがあります。これらすべてのクラスがステートメントremovePropertyに含まれている場合でも、PHPSpec はこれを処理できないようです。use

Laracasts の Jeffery Way のスクリーン キャストで、彼が実際の Eloquent モデルを使用していないことに気付きました。彼はバニラの PHP オブジェクトのみを使用します。それのポイントは何ですか?それは現実の世界ではありません。

また、私はすでにこれを行っているため、雄弁なモデルクラスを正しく参照することとは関係ありませんuse Illuminate\Database\Eloquent\Model;

また、私はファサードを決して使用しません。だから、そうでもありません。

0 投票する
1 に答える
1357 参照

php - PHPSpec 使用時のクラス インターフェイスの使用方法

PHPSpec でテストする場合、実際の具体的なクラスではなく、メソッドに注入されたクラス インターフェイスを使用するにはどうすればよいですか?

たとえば、メソッドに aProductを注入するクラスがあります。VariationInterface

ただし、PHPSpec にはバインドする IOC コンテナーがないVarientInterfaceためVarient、クラスを実際にテストすることはできません。

具象クラスではなくインターフェイスにコーディングするのがベスト プラクティスではありませんか?

0 投票する
1 に答える
229 参照

php - PHPSpec と PHPUnit を使用したアプリケーションのテスト

2 つの異なるテスト方法を使用することは可能ですか? たとえば、1 つのアプリケーションまたはパッケージ内の PHPUnit と PHPSpec ですか?

誰にもガイダンスはありますか?

0 投票する
1 に答える
2249 参照

php - PhpSpec と Prophecy の問題のモック

PhpSpecと を使用しているメソッドをテストしようとしていProphecyます。しかし、私はそれを機能させるのに少し問題があります。モックに実際の値を使いたくないので を使ったのですがArgument::any()、メソッド内で実際の呼び出しを実行したいようです。これがモックが防ぐべきものだと思いましたか?

私のクラス:

私のテスト:

そして、私が戻ってきたエラー:

エラー: Double\Illuminate\Validation\Factory\P2::make() に渡される引数 1 は、/Users/will/development/personal/blog/app/Blog/Service/Laravel で呼び出される、指定されたオブジェクトの型配列でなければなりません32 行目の /CreatePostValidator.php および /Users/will/development/personal/blog/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php(49) で定義:
eval()'d コード行 10