問題タブ [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.
php - 致命的なエラー: PHPSpec をモックするときにメンバー関数を呼び出す
これは私がテストしようとしているコードです
これが私のテストコードです
ここにエラーがあります
私の質問は、テスト内でセントリーを既にモックしているため、なぜこのエラーが発生するのですか?
php - PHPSpecとLaravelでサンプルデータを挿入する方法
環境を変更して、sqlite をドライバーとして basespec でテストし、メモリに保存します。
テストを実行するたびに、テスト データベースに情報を挿入するにはどうすればよいですか? 現在、テストは常に false を返すため失敗します。
php - phpspecでオブジェクトを条件付きでチェックする方法は?
phpspec の学習を始めたばかりで、質問があります。値が他の値と等しいかどうかを確認できます。値がいくつかの値の間にあるかどうかを確認したい場合は、次のようなマッチャーを作成できます。
そして次のようなテストを行います
しかし、どのように条件付きを行うことができますか? 返される値が 1 であるとしましょうsome_method()
。テスト対象のオブジェクトの別のプロパティを調べるように phpspec にどのように言えますか?
私は簡単なサイコロのクラスを作っています。そして、ダイスロールごとにロールの値とステータスを返し、配列する必要があります。サイコロの出目が最小の場合、ステータスは「critical_miss」になり、サイコロが最大の場合、ステータスは「critical_hit」になります。
だから、私はこれをテストしたい...
サイコロを振る。ダイスロールの値が 1 の場合、ダイスロールの値は 1 から 6 の間である必要があります。ダイスロールの値が 6 の場合、ダイスロールのステータスは「critical_miss」である必要があります。
phpspecでそのようなテストを行うことはできますか?
ありがとうございました
php - phpspec, Doctrine: インスタンス化されたオブジェクトにパラメータが設定されたことをテストする
PHPSpec を使い始めようとしていますが、壁にぶつかりました。私が作業するために与えられた既存のコードで適切なものを模倣するために、物事は少し複雑になりましたが、本質的に私の質問は、作成されたばかりのオブジェクトで何かが起こったことをテストすることです.
私は持ってRepositoryFactory
いますcreateRepository(EntityManager $em, $entityName)
Doctrine のEntityManager::getRepository($entityName)
呼び出しだけでRepositoryFactory::getRepository(EntityManager $em, $entityName)
、リポジトリが存在しない場合、THAT 呼び出しRepositoryFactory::createRepository(EntityManager $em, $entityName)
したがって、私のテストでは、リポジトリはからモックされていRepositoryFactory::getRepository
ます。
単独でのテストについて答えが出始める前に、私はそれを認識しています。私は最初にフィールド設定のチェックを書き込もうとしましたMyRepositoryFactory::createRepository
が、同じ種類の問題が発生しました. 内createRepository
でオブジェクトを作成している場合、shouldBe/shouldHaveBeenCalled でテストするモックがありません. しかし、私はここで正しいことをしようとしているので、これが私のテストの間違った場所である場合は、ハッキーなテストに合格するよりも、多くのリファクタリングを行います。
編集:これはテストされている実際のビットです
上記のビットの $repo は、ここで嘲笑されるべきものです。parent::getRepository
==> RepositoryFactory::getRepository
==>RepositoryFactory::createRepository
さらに、テストがif($flag)
ブロックに入ることはわかっていますが、内部のコードは機能していません。$this->getField()
正常に動作して戻りますが、$repo->setField
それでも null を受け取ります。$repo->setField($field)
ファンキーなロジックのない通常のセッターです。
travis-ci - travis-ci 経由で phpspec を実行する
travis-ci 経由で phpspec を実行しようとしています。
私のローカル マシンではスペックは正常に動作しますが、travis では phpspec ファイルが見つかりません。
私の travis.yml は次のようになります。
言語: php
私の作曲家はこのように
それを機能させる方法についてのアイデアはありますか?
phpspec - phpsepc2 モックですべてのパラメーターを受け入れる
#phpspec2 を使用して関数モックですべてのパラメーターを受け入れるにはどうすればよいですか?
たとえば、次のようなコードがあります。
可能なすべてのパラメーターをモックしたくありません。すべてのエンティティを受け入れる必要があります。
exception - phpspec2 で例外をキャッチする方法
仕様で例外をキャッチしようとしていますが、機能させることができません。これは私のコードです:
私が間違っているのは何ですか?
unit-testing - PhpSpec 予想される正確な呼び出し
PhpSpecでテストしようとしているLaravel5アプリケーションのメソッドがありますが、次のエラーがスローされ続けます:
メソッドには配列が渡され、モデルの getChurchTimezone メソッドがタイムゾーンを返すことをモックしたいと思います。
方法:
私の他の仕様では、 のようなことを頻繁に行っています$double->method('someArgument')->willReturn('blah')
が、何らかの理由でこの特定のケースが機能せず、その理由について困惑しています。
私はそれに配列のコピーを与えようとしました、私はそれに直接整数を与えようとしました、私は$this->church->getChurchTimezoneを独自のメソッドに引っ張って配列または整数を渡そうとしましたが、何があってもPhpSpec は常に、予想される呼び出しのエラーで「正確」に戻ってきます。
仕様:
これは、同じアプローチとパスを使用する私のアプリの他の場所の仕様の別の例です