問題タブ [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 投票する
7 に答える
5824 参照

unit-testing - Amazon S3 スタンドアロン スタブ サーバー

単体テストなどのために独自のサーバーで実行できる Amazon S3 互換のテスト サーバーについて読んだことを思い出したようです。ただし、Google と AWS の両方でこれを探すのに忍耐を使い果たしました。そのようなものは存在しますか?そうでなければ、私はそれを書くと思います。

注: Amazon EC2 (クラウド コンピューティング) ではなく、Amazon S3 (ストレージ システム) について質問しています。

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

unit-testing - 条件付きコンパイルは単体テストの有効なモック/スタブ戦略ですか?

スタブに関する最近の質問では、多くの回答がスタブを実装するための C# インターフェイスまたはデリゲートを提案していましたが、1 つの回答は、条件付きコンパイルを使用して、運用コードで静的バインディングを保持することを提案していました。この回答は、読んだ時点で -2 に変更されたため、少なくとも 2 人がこれは間違った回答だと本当に思っていました。おそらく、DEBUG の誤用が原因であるか、より広範な検証の代わりに固定値を使用している可能性があります。しかし、私は不思議に思わずにはいられません:

条件付きコンパイルの使用は、単体テスト スタブを実装するための不適切な手法ですか? 時々?いつも?

ありがとう。

編集-追加: 実験として例を追加したいと思います:

との比較

これにより、「DateTime.Now」への発信依存関係を C# インターフェイス経由でスタブ化できます。ただし、静的で十分な動的ディスパッチ呼び出しを追加し、オブジェクトは製品バージョンでも大きくなり、Foo のコンストラクターに新しい失敗パスを追加しました (割り当てが失敗する可能性があります)。

私はここで何も心配していませんか?これまでのフィードバックに感謝します!

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

c++ - C++ を解析して単体テスト スタブを生成する

最近、いくつかのレガシー コードの単体テストを作成しようとしています。

私はリンカーを使用して、どの関数がリンクエラーを引き起こしているかを示し、ソースをgrepして定義を見つけ、そこからスタブを作成するというアプローチをとってきました。

もっと簡単な方法はありますか?スタブを生成できる、使いやすい形式でクラス定義を提供できる C++ パーサーはありますか?

0 投票する
11 に答える
30760 参照

ruby - rspec:コンストラクターによって呼び出されたインスタンスメソッドをスタブする方法は?

do_something元の実装が呼び出される前に(したがって42をに割り当てる前に)、rspecをスタブするにはどうすればよい@xですか?もちろん、実装を変更することなく。

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

rhino-mocks - Rhino Mocks で部分スタブを生成することはできますか?

私は一般的にユニットテストとモッキングに不慣れで、特定のメソッドが同じクラス内の別のメソッドから呼び出されることを確認したいクラスの 1 つのテストを設定しようとしています。したがって、具体的な実装を使用したいと思いますが、その一部をモックアウトします。これは可能ですか?

そのため、GetAccounts() を呼び出すスタブを設定しようとしています (具体的な実装を使用したい) が、そのメソッドが GetAccounts(null) を呼び出すかどうかを確認したいと思います。

問題は、stub.GetAccounts() を呼び出すと、リプレイ中に呼び出されると予想される CallOriginalMethod() 行で具象クラスが呼び出されることです。したがって、レコーディング中とテストの実行中の両方で、実装の具体的なメソッドは、単にそれらをモックアウトしたいときに呼び出されます-部分的に説明したように。これは私の誤解ですか?インターフェイスだけでなく、具体的なクラスをモック/スタブ化できないようにする必要がありますか?

モックアウトできるようにしたいメソッドに virtual キーワードを追加する必要がありますか?

これは可能ですか?どうすればいいですか?

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

c++ - 関数スタブの自動生成

ヘッダーファイルで定義されている関数(クラスメンバー関数を含む)のcppファイルにスタブ実装を作成するVisual Studioアドオン(またはwindows / unixスタンドアロンプ​​ログラム)はありますか?

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

unit-testing - 「スタブ」とは何ですか?

それで、TDDにもっと参加するという私の新年の決意を続けて、私は今RhinoMocksでもっと働き始めています。

私がやりたいと思っていることの1つは、自分が取り組んでいることを本当に理解していることを確認することです。そこで、これまでに見たものについての理解を確認したいと思いました(そして、リソースとしてここに掲載するのが良いと思いました)。 )。

「スタブ」とは何ですか?

0 投票する
7 に答える
2362 参照

c# - TDD: スタブ、モック、または上記のどれでもない

TDD を私の単純なプロジェクトに適用して学習しようとしています。詳細(および以前の質問)は次のとおりです。

TDD: テスト可能なクラスの作成に関するヘルプ

具体的には、PurchaseOrders のプライベート リスト (コンストラクターで渡される) を持つ PurchaseOrderCollection クラスがあり、PurchaseOrders にはブール値のプロパティ IsValid があります。PurchaseOrderCollection には、リスト内のいずれかの PurchaseOrders の IsValid が false の場合に true を返す HasErrors プロパティがあります。これが私がテストしたいロジックです。

これは私の前の質問と似ていますが、このテストは結合されすぎているという点で、テストに合格するために PurchaseOrder IsValid を false または true にするロジックを知る必要があります。クラス自体が問題ではないという点で、質問は異なります(imo)。

基本的に、IsValid が false または true である PurchaseOrder を、PurchaseOrder とは何かを知らなくても宣言できるようにしたいと考えています。

私の限られた TDD の知識から、これはスタブまたはモックを使用するものです。私の主な質問は、これは正しいですか? または、これには別の方法を使用する必要がありますか? それとも、私は完全に欠陥があり、このテストを書いて間違って考えているだけですか?

私が最初に考えたのは、ある種のモック フレームワークを使用して、常に true または false を返す PurchaseOrder を作成することでした。私が読んだことから、 IsValid virtual を宣言する必要があります。2 番目に考えたのは、PurchaseOrder のインターフェイスとして IPurchaseOrder を追加し、常に false または true を返す偽の PurchaseOrder を作成するように変更することでした。これらは両方とも有効なアイデアですか?

ありがとう!

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

c# - C# デリゲート メソッド スタブを生成する

デリゲート スタブ メソッドを自動的に作成する方法を知っている人はいますか?

WPF では、常にデリゲートを渡す必要があるようです。存在しないメソッド名を入力して、メソッド スタブを自動的に生成できるようにしたいと考えています。

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

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

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

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

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

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

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

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

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

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

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