問題タブ [jmock]
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 - 静的メソッドをモックするjmock
コードに静的メソッドがあり、なんとかしてモックを作成したいと思います。
私はjmockを使用しています。
これができると思う1つの方法は、静的メソッドの周りに「ラッパークラス」を配置してこれをモックすることですが、より良い解決策を望んでいました。
私はこれについて間違った方法で行っていますか?
フィードバック:
静的メソッドを呼び出すだけのメソッドを持つインターフェイスとクラスを作成する予定でした。このラッパークラスの呼び出しをモックするだけで、ロジックをモックできます。(それについて話しても汚いです:))
java - JmockはHttpSessionおよびHttpServletRequestでどのように使用されますか
私はjmockを初めて使用し、HttpSessionをモックしようとしています。私は得ています:
java.lang.AssertionError:予期しない呼び出し:httpServletRequest.getSession()期待値が指定されていません:あなたは...-カーディナリティ句で期待値を開始するのを忘れましたか?-モックされたメソッドを呼び出して、期待値のパラメーターを指定しますか?
試験方法:
@テスト
私は少し検索を行いましたが、これがどのように行われるのかはまだわかりません。小さなピースが欠けているような気がします。これの経験がある人なら誰でも私を正しい方向に向けることができます。ありがとう
unit-testing - 予想される JMock メソッド呼び出しにパラメーターを取得/保存しますか?
XML メッセージを受信すると、それを Message オブジェクトにダイジェストし、メッセージ ID + CorrelationID の両方をタイムスタンプとともに配置し、それを Client オブジェクトに転送する "Adapter" オブジェクトをテストしたいと考えています。=20 メッセージは、前のもの (例: m2.correlationID =3D m1.ID)。
Client をモックし、Adapter が "client.forwardMessage(m)" を 2 回正常に呼び出して、最初のメッセージに null の correlationID を指定し、2 番目のメッセージに null 以外のcorrelationID を指定したことを確認します。
ただし、ID (m1.ID など) を取得して、correlationID が正しく設定されていることを正確にテストしたいと思います。
しかし、とにかくそうする方法が見つかりませんでした。
機能の追加に関するジラがありますが、誰もコメントしておらず、割り当てられていません。
これは本当に未実装ですか?
スタブできる IdGenerator オブジェクトを使用するようにアダプターを再設計するという代替案について読みましたが、オブジェクトが多すぎると思います。
ありがとう、そしてどんなコメントにも感謝します:-)
タイエブ
java - スーパークラスのメソッド呼び出しをモックできますか?
場合によっては、クラス メソッドをテストしたい場合や、スーパー クラス メソッドの呼び出しを期待したい場合があります。easymock または jmock を使用して Java でこの期待を行う方法を見つけられませんでした (それは不可能だと思います)。
スーパークラスメソッドロジックでデリゲートを作成し、それに期待を設定する(比較的)クリーンなソリューションがありますが、そのソリューションをいつ使用するのか、理由はわかりません。アイデア/例はありますか?
ありがとう
java - JMockを使用した具体的なサードパーティクラスのテスト
私は転送メソッドを持つクラスを持っていますfoo
:
foo
実際に前進するかどうかをテストしたいと思います。私にとって残念なことに、Concrete
これはサードパーティライブラリのクラスであり、インターフェイスではなく具象型です。したがってClassImposteriser
、モックを作成するにはJMockで使用する必要Concrete
があるため、テストケースでは次のようにします。
}
残念ながら、Concrete.bar
順番にスローするメソッドを呼び出します。そのメソッドは最終的なものなので、オーバーライドすることはできません。さらに、その行をコメントアウトしても、が呼び出されnew ClassUnderTest.foo( c, s );
たときではなく、JMockが例外を設定したときに例外がスローさfoo
れます。
ClassUnderTest.foo
では、そのメソッドがどのように転送されるかをテストするにはどうすればよいConcrete.bar
ですか?
編集:
はい、バーは最終です。
私の解決策は一般的なものではありませんが、サードパーティライブラリの「Tester」クラスを使用して正しく設定することでしたConcrete
。
java - Jmock を使用してモックを作成し、それ自体に null 値を返す
次のようなメソッドがあります。
MyClass パラメーター c のモック インスタンスをセットアップして、それ自体が null の値を返し、 c.someMethod() が呼び出されないようにする方法を見つけようとしています。私の単体テストは次のようになります。
基本的に、私は MyClass のモック インスタンスを設定し、その値が null 値に対してテストされると true を返し、メソッド someMethod() が呼び出されないという期待を設定しています。
jMock は、Object クラス (equals(null) 部分) によって提供されるメソッドをオーバーライドすることはできないと述べているため、現在、テストは失敗しています。
jMockでこれを行う方法はありますか? このパターンは意味がありますか?これは有効なテストですか?そうでない場合、これをテストする方法について何か提案はありますか?
java - jUnit - 継承されたメソッドが呼び出されたことをアサートする方法は?
便利なメソッドを追加するために拡張したいサードパーティのライブラリクラスがあるとします (たとえば、既定のパラメーターを使用して継承されたメソッドを呼び出すことができます)。
jUnit/jMock を使用して、継承された正しいメソッドが呼び出されていることをテストするアサーション/モックの期待値を記述できますか?
たとえば、次のようなものです。
method
それが呼び出されているとどのように断言できますか?
java - jMockモッククラスとインターフェース
私は自分のプロジェクトのモックフレームワークとしてjMockを実験していました。クラスとインターフェースの両方をモックする必要がある状況になりました。私ClassImposteriser.INSTANCE
はコンテキストのなりすましを開始するためにを使用しました。
クラスとモックへValidator
のインターフェースを想定しています。Person
インターフェイスをモックしようとしたときにPerson
、問題が発生しましたNoClassFoundDefError
。クラスをあざけるとValidator
問題ありませんでした。
そのクラスとインターフェイスの両方が必要ですが、問題を解決できません。助けてください。
コード例:
嘲笑
private Mockery context = new JUnit4Mockery() {{ setImposteriser(ClassImposteriser.Class) }};
クラス :
private Validator validator;
インターフェース :
private Person person;
内部試験方法
validator = context.Mock(Validator.class);
---->作業中
person = context.Mock(Person.class);
---->NoClassFoundDefError
java - リスト内の各項目のモックされたメソッドへの呼び出しをテストするより適切な方法はありますか
これは、私が最近よく遭遇するパターンの例です。リストを受け取り、リスト内の各項目に対して他のメソッドを呼び出す可能性があるテスト対象のメソッドがあります。これをテストするために、予想される呼び出しパラメーターを使用してイテレーターを定義し、イテレーターの各項目に対して呼び出しが行われることを確認するための JMock 期待値内のループを定義します (以下の簡単な例を参照)。
私は Hamcrest マッチャーを見てきましたが、これをテストするものを見つけられませんでした (または、利用可能なマッチャーがどのように機能するかを誤解しています)。誰もがよりエレガントなアプローチを持っていますか?