問題タブ [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 に答える
1609 参照

php - 致命的なエラー: PHPSpec をモックするときにメンバー関数を呼び出す

これは私がテストしようとしているコードです

これが私のテストコードです

ここにエラーがあります

私の質問は、テスト内でセントリーを既にモックしているため、なぜこのエラーが発生するのですか?

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

php - PHPSpecとLaravelでサンプルデータを挿入する方法

環境を変更して、sqlite をドライバーとして basespec でテストし、メモリに保存します。

テストを実行するたびに、テスト データベースに情報を挿入するにはどうすればよいですか? 現在、テストは常に false を返すため失敗します。

0 投票する
0 に答える
482 参照

php - phpspecでオブジェクトを条件付きでチェックする方法は?

phpspec の学習を始めたばかりで、質問があります。値が他の値と等しいかどうかを確認できます。値がいくつかの値の間にあるかどうかを確認したい場合は、次のようなマッチャーを作成できます。

そして次のようなテストを行います

しかし、どのように条件付きを行うことができますか? 返される値が 1 であるとしましょうsome_method()。テスト対象のオブジェクトの別のプロパティを調べるように phpspec にどのように言えますか?

私は簡単なサイコロのクラスを作っています。そして、ダイスロールごとにロールの値とステータスを返し、配列する必要があります。サイコロの出目が最小の場合、ステータスは「critical_miss」になり、サイコロが最大の場合、ステータスは「critical_hit」になります。

だから、私はこれをテストしたい...

サイコロを振る。ダイスロールの値が 1 の場合、ダイスロールの値は 1 から 6 の間である必要があります。ダイスロールの値が 6 の場合、ダイスロールのステータスは「critical_miss」である必要があります。

phpspecでそのようなテストを行うことはできますか?

ありがとうございました

0 投票する
0 に答える
570 参照

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)ファンキーなロジックのない通常のセッターです。

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

travis-ci - travis-ci 経由で phpspec を実行する

travis-ci 経由で phpspec を実行しようとしています。

私のローカル マシンではスペックは正常に動作しますが、travis では phpspec ファイルが見つかりません。

私の travis.yml は次のようになります。

言語: php

私の作曲家はこのように

それを機能させる方法についてのアイデアはありますか?

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

phpspec - phpsepc2 モックですべてのパラメーターを受け入れる

#phpspec2 を使用して関数モックですべてのパラメーターを受け入れるにはどうすればよいですか?

たとえば、次のようなコードがあります。

可能なすべてのパラメーターをモックしたくありません。すべてのエンティティを受け入れる必要があります。

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

exception - phpspec2 で例外をキャッチする方法

仕様で例外をキャッチしようとしていますが、機能させることができません。これは私のコードです:

私が間違っているのは何ですか?

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

unit-testing - PhpSpec 予想される正確な呼び出し

PhpSpecでテストしようとしているLaravel5アプリケーションのメソッドがありますが、次のエラーがスローされ続けます:

メソッドには配列が渡され、モデルの getChurchTimezone メソッドがタイムゾーンを返すことをモックしたいと思います。

方法:

私の他の仕様では、 のようなことを頻繁に行っています$double->method('someArgument')->willReturn('blah')が、何らかの理由でこの特定のケースが機能せず、その理由について困惑しています。

私はそれに配列のコピーを与えようとしました、私はそれに直接整数を与えようとしました、私は$this->church->getChurchTimezoneを独自のメソッドに引っ張って配列または整数を渡そうとしましたが、何があってもPhpSpec は常に、予想される呼び出しのエラーで「正確」に戻ってきます。

仕様:

これは、同じアプローチとパスを使用する私のアプリの他の場所の仕様の別の例です