問題タブ [mocking]

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 投票する
3 に答える
462 参照

unit-testing - Rhino Mocks - メソッドのグループの少なくとも 1 つが呼び出されていることをテストするにはどうすればよいですか?

私がモックしているインターフェイス IFoo があるとします。このインターフェイスには 3 つのメソッドがあります。テスト対象のシステムが 3 つのメソッドの少なくとも 1 つを呼び出すことをテストする必要があります。何回呼び出すか、どの引数で呼び出すかは気にしませんが、すべてのメソッドを無視し、IFoo モックに触れない場合は失敗のケースです。

Expect.Call のドキュメントを調べてきましたが、簡単な方法がわかりません。

何か案は?

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

c# - Rhino Mocksで使用するのに最適なスタイル/構文は何ですか?

Rhino Mocksを使用する場合、単体テストを作成するための複数のアプローチが存在します。

  • 標準構文
  • 記録/再生構文
  • 流暢な構文

理想的で最も摩擦のない方法は何ですか?

0 投票する
5 に答える
27315 参照

java - EasyMock: 警告なしでジェネリック化されたクラスのモックを作成するにはどうすればよいですか?

コード

「型の安全性: SomeClass 型の式は、SomeClass<Integer> に準拠するために未チェックの変換が必要です」という警告が表示されます。

0 投票する
9 に答える
2484 参照

unit-testing - モックはどのように使用されることを意図していますか?

最初にモックを紹介されたとき、主な目的は外部データ ソースからのオブジェクトをモックアップすることだと感じました。この方法では、自動化された単体テストのテスト データベースを維持する必要はなく、単にそれを偽造することができました。

しかし、今は違うことを考え始めています。テストされたメソッドをそれ自体の外部から完全に分離するためにモックを使用する方が効果的かどうか疑問に思っています。頭に浮かび続けるイメージは、絵を描くときに使う背景です。ペンキが全体に行き渡るのを防ぎたいのです。私はその方法をテストしているだけで、これらの偽造された外部要因にどのように反応するかを知りたいだけですか?

このようにするのは信じられないほど面倒に思えますが、私が見ている利点は、テストが失敗した場合、それは 16 層下ではなく、めちゃくちゃになっているためです。しかし、今では同じテスト範囲を得るために 16 のテストを行う必要があります。さらに、各テストはより複雑になり、テスト対象のメソッドとより深く結びついています。

私には正しいと思いますが、残忍にも見えるので、他の人がどう思うか知りたいです.

0 投票する
10 に答える
48894 参照

java - Java での静的ブロックのモック

Java に対する私のモットーは、「Java には静的ブロックがあるからといって、それを使用する必要があるという意味ではありません」です。冗談はさておき、Java にはテストを悪夢にするトリックがたくさんあります。私が最も嫌いなのは、匿名クラスと静的ブロックの 2 つです。スタティック ブロックを利用するレガシー コードが多数ありますが、これらは単体テストの作成を推進する際の厄介なポイントの 1 つです。私たちの目標は、最小限のコード変更で、この静的初期化に依存するクラスの単体テストを記述できるようにすることです。

これまでのところ、私の同僚への提案は、静的ブロックの本体をプライベートな静的メソッドに移動し、それを呼び出すことstaticInitです。このメソッドは、静的ブロック内から呼び出すことができます。単体テストでは、このクラスに依存する別のクラスをJMockitstaticInitで簡単にモックして、何もしないようにすることができます。これを例で見てみましょう。

に変更されます

JUnitで次のことができるようにします。

ただし、このソリューションには独自の問題もあります。実際には静的ブロックを に対して実行したいので、同じ JVM でDependentClassTestとを実行することはできません。ClassWithStaticInitTestClassWithStaticInitTest

このタスクを達成するためのあなたの方法は何ですか? または、よりクリーンに動作すると思われる JMockit 以外のより優れたソリューションはありますか?

0 投票する
4 に答える
2616 参照

.net - わざわざStreamReaderオブジェクトをモックしませんか?

ストリームリーダーを使用してデータをインポートし、現時点では、テストで小さなサンプルファイルをハードコーディングして作業を行っています。

これとどのようにモックオブジェクトを使用するのが賢明ですか?

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

delphi - サードパーティのCOMオブジェクトと相互作用してインスタンス化するコードをどのように単体テストしますか?

現在、ユニットテストに全力で取り組むことを妨げている最大の問題の1つは、私が作成するコードの非常に大きな割合が、相互作用する傾向のあるさまざまなソースからのサードパーティのCOMオブジェクトに大きく依存していることです(I ' m必要に応じて、いくつかのヘルパーライブラリを使用してMicrosoft Office用のアドインを作成します)。

私はおそらくモックオブジェクトを使用する必要があることを知っていますが、この場合、どのように正確にそれを実行しますか?既存のオブジェクトへの参照を渡す必要がある場合は比較的簡単ですが、一部のルーチンは外部COMオブジェクト自体をインスタンス化し、場合によっては別のライブラリから他の外部COMオブジェクトに渡すことがあります。

ここでのベストプラクティスのアプローチは何ですか?テストコードがレジストリ内のCOM登録情報を一時的に変更して、テストされたコードが代わりにモックオブジェクトの1つをインスタンス化するようにする必要がありますか?変更されたタイプのライブラリユニットを注入する必要がありますか?他にどのようなアプローチがありますか?

Delphiの例やツールには特に感謝しますが、より一般的なアドバイスやより高レベルの説明にも同様に満足します。

ありがとう、

オリバー

0 投票する
4 に答える
12256 参照

c# - 最高のモッキング ライブラリ

C# 3.0/ASP.NET MVC に最適なモック ライブラリはどれですか? なんで?

0 投票する
6 に答える
741 参照

unit-testing - オブジェクトのモッキングは広く使用されていますか?

オブジェクトのモッキング (JMock、NMock、RhinoMocks などのフレームワークとユニット テスト フレームワークを組み合わせたもの) を日常の開発プロセスに組み込んでいる人がどれだけいるかに興味があります。あなたの経験は何ですか?

おわかりのように、私は GIS (地理情報システム) プラットフォーム上で開発を行っており、ほとんどの作業は何らかのデータ処理方法に関連しています。そのデータ オブジェクト モデルは非常に複雑であるため (多数のクラスとインターフェイスがあり、すべて COM ベース)、モックを作成するのも非常に困難で面倒です。この場合、モックは、テスト スイートを作成するときに大量のオーバーヘッドを引き起こします。似たような状況の人がいるのだろうか、それとも単に、(あなたがいる状況に関係なく)嘲笑はどのように機能するのだろうか.

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

java - マッチャーとプリミティブ型で jmockit の期待値を使用する

単体テスト (TestNG を使用) に jmockit を使用していますが、Expectations クラスを使用して、プリミティブ型 (ブール値) をパラメーターとして受け取るメソッドをマッチャーを使用してモックアウトするのに問題があります。この問題を示すサンプル コードを次に示します。

invokeReturning(...) への呼び出しを含む行は、NullPointerException をスローします。

この呼び出しをマッチャーを使用しないように変更すると、次のようになります。

それはうまく動作します。私の実際のコードでは、実際にマルチパラメーターメソッドをモックしていて、別の引数でマッチャーを使用する必要があるため、これは私にとっては良くありません。この場合、Expectations クラスでは、すべての引数がマッチャーを使用する必要があります。

これはバグであると確信しています。または、プリミティブ型でマッチャーを使用できない可能性があります (それは悲しいことです)。誰かがこの問題に遭遇し、それを回避する方法を知っていますか?