問題タブ [stub]

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 に答える
507 参照

unit-testing - 入力引数を持つオブジェクトのスタブ

そのため、データベース コネクタのテストを作成するために、データベース コネクタをスタブ化しようとしています。問題は、データベース コネクタが非常に薄い層であり、それに対するクエリがいくらか制限がないことです。コードでデータベースから変数を要求できるようにしたいのですが、コネクタはこれで問題ないはずです。この呼び出しの署名は次のようになります。

(これはすべて MATLAB にあります。答えが言語にとらわれないか、少なくとも MATLAB では実行不可能でないことを願っています。)

コードで使用するとdimensionName、データベースに格納される数少ないものの 1 つになります。コードがそれを呼び出し、それが存在しない場合、それは問題ありません。getDimensionここでの問題は、次のようなを 2 回呼び出すコードをテストしたいということです。

(うまくいけば) 明らかな理由で、同じであるaltstrは限りません。実際、通常はそうではありません。

それで、私の質問です。適切なテスト値を返すために getDimension をスタブ化したい場合、どうすればよいですか? getDimensionAltデータベースから出てくる可能性のあるものの数はいくらか無制限であり、それを維持するのは面倒なので、作成は面倒に思えます。スタブ オブジェクトにロジックを配置するよりも良い方法はありますか? これは間違った方法のように思えます...

編集: testDB のセットアップが提案されました。では、テスト ケースごとに testDB をセットアップする必要はありませんか? そして、各テストで、DB 接続を作成し、それをスタブとして返し、テストを実行してから、DB 接続をクリーンアップする必要がありました。これは、特に私がテストしているシステムではない場合、各テストのオーバーヘッドが大きくなるようです。

testDB をセットアップして、毎回適切な値を入力することは可能だと思います。それは良い習慣ですか?

編集 2: おそらく私の質問は不明です。テストしようとしている小さなコードがあります。上記の 2 行ほど複雑ではないので、きれいにテストしたいと思います。問題は、getDimension呼び出しのスタブ化が引数に依存していることです。このスタブを他のテストで再利用する必要はありません。

その答えは、「スタブに単純なロジックを入れても問題ない」かもしれないと思います。これは、MATLAB に無名クラスやスタブ フレームワークがないという事実によって完全に混乱しているため、難しいことですが、MATLAB でスタブ フレームワークを作成する前に、自分がやっていることを概念的に明確にしたいと考えています。

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

xml - junit スタブ オブジェクトの外部化

私のプロジェクトでは、java(factories) 自体で junit をテストするためのスタブ ファイルを作成しました。ただし、これらのスタブを外部化する必要があります。多くのシリアライザー/デシリアライザーを見た後、XStream を使用してこれらのスタブ オブジェクトをシリアライズおよびデシリアライズすることにしました。XStreamは魅力的に機能します。それが主張するものはかなり良いです。以前は、さまざまなテスト ケースのテストに必要なすべてのスタブを生成する AFactory という 1 つのファクトリ クラスがありました。ここで、生成された各スタブを外部化するときに、障害にぶつかります。ファクトリによって生成されたスタブごとに 1 つの xml ファイルを作成する必要がありました。
例えば、

ここで、このスタブを外部ファイルに移動しようとすると、作成されたスタブ (A-stub1.xml、A-stub2.xml、および A-stub3.xml) ごとに 1 つの xml ファイルを作成する必要がありました。このアプローチの問題点は、xml スタブ ファイルの急増につながることです。

私は、単一の Bean クラスに関連するすべてのスタブを単一の xml ファイルに保持する方法を考えていました。

上記のように、すべてのスタブを xml 表現で単一の xml ファイルに保持できるフレームワークはありますか? または、順守するための正しいアプローチは何だと思いますか?

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

ruby-on-rails - Ruby on RailsアプリケーションでRSpecを使用するときに、Mockオブジェクトの#classメソッドをスタブ化することは合法ですか?

モックオブジェクトの#classメソッドをスタブしたいと思います。

このプログラムの5行目では、@ john.class.nameのようなものを許可するために、#classメソッドをスタブします。これは正しい方法ですか?悪い副作用はありますか?

編集:

Letterクラスは次のようになります。

ActiveRecordが:toフィールドのクラス名を取得するのか、それともto.class.name他の方法で取得するのか疑問に思います。たぶんこれがclass_nameメソッドのActiveRecord::Baseの目的ですか?

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

.net - 必要に応じてUSBドライブから.NETFrameworkをインストールする

USBドライブを介して配布される.NETアプリケーションがあります。エンドユーザーはドライブを接続し、EXE(.NET exe)をダブルクリックして、インストールせずに実行します。

ここで問題となるのは、.NETがインストールされていない場合、MSがそこに置いたデフォルトのダウンロードメッセージを表示する代わりに、.NETインストーラーをトリガーしたいということです。インストーラーは、USBを介してアプリケーションとともに配布されます。

これを行う1つの方法は、.NET実行可能ファイルのPEスタブファイルを置き換えることです。しかし、C#コンパイラで/ STUBスイッチが表示されていません(Cコンパイラにはありましたが)。

他に誰かが考えることができるものはありますか?

更新:Tim Robinsonのおかげで、WindowsがPEスタブファイルを処理しないことを理解しています。したがって、ClickOnceソリューションが残っている唯一の実行可能なソリューションのようです。ClickOnceをチェックします。

0 投票する
15 に答える
661173 参照

java - 必要なライブラリ rt.jar の制限によるクラスへのアクセス制限?

IBM のWSDL2Javaで作成されたJava 1.4コードを、スタブを再作成せずにJava5でコンパイルしようとしましたが、 Eclipseでこのエラーが発生しました。 私は、生成されたスタブは、ランタイムが利用可能である限りコンパイルする必要があると想定しています (利用可能です)。
jars

Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar

完全なクラス名はjavax.xml.namespace.QName

ここで何が起こっているのですか?これは、ソーセージから豚をリファクタリングしようとしているケースですか? スタブを再作成した方がよいでしょうか?

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

java - JDBC ResultSetをスタブ/モックしてJava5と6の両方で動作させる方法は?

JDBCステートメントなどを使用して動作するクラスの一部をテストしていますが、JDBCResultSetインターフェイスで問題が発生しました。

ソフトウェアはJava5とJava6の両方で実行する必要があるため、テストも両方のバージョンで実行する必要があります。残念ながら、Java 6は、一連​​の新しいクラス/インターフェースを返す一連の新しいメソッド(まだ大したことではありません)を導入しました。これにより、事態はさらに困難になります。(FrankCarverのPunchBarrelを参照してください-たとえば、Java 6はJDBCを壊します)

これらのバージョンの違いを見つける前に、スタブとモックのどちらかを検討しましたが、ResultSetにはスタブを操作するのがより自然な内部状態(現在の行が処理される)があるため、スタブになりました。

しかし、新しいメソッドをとして導入しないpublic NClob getNClob(int columnIndex)と、クラスはJava 6で壊れます。クラスを導入すると、Java5で壊れます。

mockito(たとえば)コールバックを使用して、状態が戻り値に反映されるようにすることはできますが、他の誰か(おそらくもっといいアイデア)がありますか?

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

c# - RhinoMocks でシール クラスを返すメソッドをモックする

このコードの実行:

いつ

NotSupportedException - 「封印されたクラスのモックを作成できません」をスローします。封印されたクラスをモックできない理由は理解できますが (TypeMock には解決策があります)、封印されたクラス (文字列) を返すクラスをモックすることの問題は何ですか?

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

c# - Webサービス用のJavaスタブを作成するためのライブラリ

誰かがクライアントとしてJavaWebサービススタブを生成するための優れたライブラリを推奨できるかどうか知りたいです。

現在、WSDLのみを必要とし、必要なクラスとメソッドを作成するジェネレーターを組み込んだ製品を使用しています。

私の問題は、警告がスローされ、使用しようとしている一部のWebサービスのメソッドが作成されないことです。

本当の問題は、問題が何であるかを説明していないことです(したがって、Webサービスの所有者と一緒に行って変更することができます)。また、出力を変更させて、おそらく自分で問題を修正できるようにします。

それでも、Webサービスの所有者は(これはいくつかの異なるwsで発生するため)、wsは正常に実行され、実際にsoapUIを使用すると実際に機能すると言います。

私はsoapUI自体が使用するライブラリをざっと見てみましたが、有望に見えます。

作業を行う必要のあるAxisがあることは知ってい ますが、私の懸念は、失敗したジェネレーターがすでにそのライブラリーを使用していることです(これにより、再び失敗することになります)

そして最近、これら2つのライブラリがJavaソーススタブを生成するのか、それとも次のようなメソッドしかないのかわかりません。

私が欲しいものが次のようなものである場合:

だから、誰もがお勧めできる良いwsスタブジェネレータを持っていますか?

自分でハンドコーディングしようとしていますが、受け入れられるまでには間違いなく数日かかります

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

java - ユニットテストのために、Javaで個々のメソッドをどのようにスタブ化しますか?

ある文字列に書き込んでいるクラスに、同じことを行う別のメソッドを呼び出すメソッドがあります。何かのようなもの:

ユニットテストの目的で、fooとbarを別々にテストしたいと思います。foo()を呼び出したときにbarが実行されないようにする方法、または別のメソッドに置き換える方法はありますか?