問題タブ [stubs]
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.
java - Mockito を使用して例外をスローできません
メソッドが実行されているときに、(テスト中に) 例外をスローしたいと思います。私はいくつかのことをすることができました:
- stub(mock.someMethod("some arg")).toThrow(new RuntimeException());
- when(mock.someMethod("some arg")).thenThrow(new RuntimeException())
- doThrow.....
通常、スパイ メソッドを呼び出すスパイ オブジェクトを作成します。スタブを使用すると、例外をスローできます。この例外は常にログで監視されます。さらに重要なことは、例外がスローされたメソッドがそれをキャッチして特定の値を返す可能性があるため、テストがクラッシュしないことです。ただし、次のコードでは例外はスローされません (ログでは何も監視されません && 戻り値は true ですが、false になるはずです)。
問題: この場合、例外はスローされません。
php - PHPSpec スタブでメソッドを 1 つだけモックする
さて、パッケージの 1 つを PHPSpec テストに移行しようとしていますが、すぐにこの問題に遭遇しました。パッケージは shoppingcart パッケージなので、カートに 2 つのアイテムを追加すると、カートのカウントが 2 になることを簡単にテストしたいと思います。しかしもちろん、ショッピングカートに同じアイテムを 2 つ追加すると、カートに新しいエントリはありませんが、元のアイテムの「数量」は 2 になります。異なるサイズ。そのため、各アイテムは、その ID とオプションに基づいて、一意の rowId によって識別されます。
これは、rowId (add()
メソッドによって使用される)を生成するコードです。
今、私は次のようにテストを書きました:
しかし問題は、メソッドに対して両方のスタブが返さnull
れることgetId()
です。だから私はwillReturn()
そのメソッドの設定を試みたので、私のテストは次のようになりました:
しかし、今ではエラーが発生し、予期しないメソッドが のように呼び出されていることがわかりますgetName()
。したがって、呼び出される CartItem インターフェイスのすべてのメソッドに対して同じことを行う必要があります。
これで動作します。テストは緑色です。しかし、それは間違っているように感じます...何か不足していますか、それともPHPSpecの制限ですか?
java - スタブ クラスを格納する従来の場所は?
テスト対象のシステムがあり、SUT を分離するためにいくつかのスタブ クラスを作成する必要があります。私は NetBeans を使用していますが、私の質問は、テスト クラスをテスト クラスと一緒にテスト フォルダに保存するか、それともメイン パッケージの stubee の隣に保存する必要があるかということです (?)。
テストクラスの内部クラスとしてスタブを作成していると聞いたことがあります。多くのスタブが複数のクラス間で共有されるため、これを行いたくありません。そのため、それらをスタンドアロンにする方が良い設計であり、通常保存される場所の規則に従いたいと考えています。
ありがとう。
ruby - スタブと rspec の古い構文の問題
コードを書いて rspec を使用していますが、構文が古いという警告を受け取りました。
エラー メッセージは次のとおりです。構文を明示的に有効にせずにstub
rspec-mocks の古い:should
構文を使用することは非推奨です。新しい:expect
構文を使用するか、:should
代わりに明示的に有効にしてください。
ruby - メソッドのように扱われるモックとダブルでのテスト
テストにモックとスタブを導入しましたが、すべてうまくいきました。コードをさらにテストするように変更して以来、rspec で次のエラーが発生していますが、エラーが発生する理由が理解できないため、少し壁にぶつかりました。テストしたばかりのときは 16 未満で問題ありませんでしたが、16 を超えるはずのテストを導入すると、次のエラーが発生します。
問題のコードは以下のとおりです。