問題タブ [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.
testing - モックとは何ですか? また、いつ使用する必要がありますか?
ウィキペディアのモック オブジェクトに関する記事を読んだところですが、その目的はまだ完全にはわかりません。これらは、実際のオブジェクトが複雑すぎるか予測できない場合に、テスト フレームワークによって作成されるオブジェクトのようです (モック オブジェクトを完全に制御できるため、モック オブジェクトの値が何であるかは 100% わかります)。
ただし、すべてのテストは既知の値のオブジェクトで行われているという印象を受けていたので、何かが欠けているに違いありません。たとえば、あるコース プロジェクトで、カレンダー アプリケーションを担当しました。テスト スイートは、複数のイベント オブジェクト、さまざまなサブシステム、およびユーザー インターフェイス間の相互作用をテストできるように、それらが何であるかを正確に把握しているイベント オブジェクトで構成されていました。これらはモック オブジェクトだと思いますが、既知の値のオブジェクトがなければシステムをテストできないため、なぜこれを行わないのかわかりません。
java - 静的メソッドをモックするjmock
コードに静的メソッドがあり、なんとかしてモックを作成したいと思います。
私はjmockを使用しています。
これができると思う1つの方法は、静的メソッドの周りに「ラッパークラス」を配置してこれをモックすることですが、より良い解決策を望んでいました。
私はこれについて間違った方法で行っていますか?
フィードバック:
静的メソッドを呼び出すだけのメソッドを持つインターフェイスとクラスを作成する予定でした。このラッパークラスの呼び出しをモックするだけで、ロジックをモックできます。(それについて話しても汚いです:))
unit-testing - テストで重複したコードを回避し、自分自身を嘲笑しないようにするにはどうすればよいですか?
私の質問では、「モックイスト」TDD プラクティショナーとして、テスト対象のメソッドと同じクラスの他のメソッドをモックする必要がありますか? Avdi 氏は、「個人的には、自分自身を嘲笑することは、ほとんどの場合、コードの匂いだと思います。それは、動作ではなく実装をテストすることです」と答えました。彼は正しいかもしれませんが、多くの場合、実装と動作を区別できません。
役立つ答えにつながる可能性のある別の例 (Python スタイルの疑似コード) があります。
ここでの考え方は、get_components_from_spec_file コンポーネント クラス メソッドがコンポーネントのリストを読み取るファイルへのパスを取得するために、get_components メソッドが spec_filepath メソッドを呼び出すというものです。次に、spec_filepath メソッドが spec_dirpath を呼び出します。spec_dirpath は、スペック ファイルを含むディレクトリを VCS システムから同期し、そのディレクトリへのパスを返します。(このコードのバグを探さないようにしてください。結局のところ、これは疑似コードです。)
これらのメソッドをテストする方法についてのアドバイスを探しています...
spec_dirpath のテストは非常に簡単です。VCS クラスをモックし、モック オブジェクトを返して、適切なメソッドが呼び出されていることを確認します (そして、spec_dirpath メソッドがモックの dirpath メソッドが返すものを返すことを確認します)。
しかし、spec_filepath のテスト中に spec_dirpath をモックしない場合、spec_filepath テストで spec_dirpath コードから同じテスト コードを複製しないようにするにはどうすればよいでしょうか? また、get_components のテスト中に spec_filepath をモックしない場合、spec_filepathとspec_dirpath の両方からテスト コードが重複しないようにするにはどうすればよいでしょうか?
java - JMockit を使用して抽象クラスの非公開静的メソッドをモックしますか?
私は次のクラスを持っています:
このメソッドをモックしたい。JMockitを使用することにしました。そこで、モック クラスを作成します。
そして私のテストコードは次のようになります:
残念ながら、このテストでは、AbstractParent は "MOCK" ではなく "OriginalOutput" を返します。理由はありますか?私は何か間違ったことをしていますか?モッククラスも抽象として宣言しようとしましたが、役に立ちませんでした。
編集メソッドを公開すると、テストが問題なく実行されることに注意してください... JMockitでは、任意のスコープのメソッドをモックできるはずなので、これは奇妙です。
回答モック メソッドのみをパブリックにする必要があります。元のメソッドはそのままにしておくことができます。
c# - MVC UserViewControl を単体テストするにはどうすればよいですか?
私はしばらくの間、ASP.NET MVC で UserViewControl の単体テストを作成しようとしています。次のようなコードを取得したいと思います。
残念ながら、何を試しても、RenderView の奥深くからエラーが発生します。これは、(私が知る限り)静的 HttpContext.Current オブジェクトが役に立たないことが原因です - I get NullReferenceException
s from System.Web.UI.Page.SetIntrinsics
.
Phil Haack のHttpSimulatorHttpBrowserCapabilities
を使用して HttpContext オブジェクトを取得しようとしましたが、さらに少し進めるには偽のオブジェクトを指定する必要があることもわかりました。
これで、そのオブジェクトのプロパティ アクセスで例外が発生します。私はできる限り多くの人を嘲笑しましたが、どこにも速くなっていないようでした.
誰かがこれを機能させることができましたか?
java - JmockはHttpSessionおよびHttpServletRequestでどのように使用されますか
私はjmockを初めて使用し、HttpSessionをモックしようとしています。私は得ています:
java.lang.AssertionError:予期しない呼び出し:httpServletRequest.getSession()期待値が指定されていません:あなたは...-カーディナリティ句で期待値を開始するのを忘れましたか?-モックされたメソッドを呼び出して、期待値のパラメーターを指定しますか?
試験方法:
@テスト
私は少し検索を行いましたが、これがどのように行われるのかはまだわかりません。小さなピースが欠けているような気がします。これの経験がある人なら誰でも私を正しい方向に向けることができます。ありがとう
c# - MOQ ドキュメントはどこにありますか?
MOQ の包括的なドキュメントはどこにありますか? 私はあざけることから始めたばかりで、頭を悩ませています。http://code.google.com/p/moq/wiki/QuickStartのすべてのリンクを読みましたが、チュートリアルや簡単な紹介が見つからないようです。
Rhino Mocks も簡単に調べましたが、非常に紛らわしいことがわかりました。
はい - Stephen Walthers の記事を読みました - とても役に立ちました。私もリンクをたどりました。http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [壊れたリンク]のビデオを見ることができないようです。
具体的には、モックされたクラスからイベントが発生したかどうかを判断しようとしています。QuickStarts ページのイベントの例をコンパイルすることができません。Google グループで Daniel は、CreateEventHandler は type のイベントしか処理できないと説明しましたがEventHandler<TEventArgs>
、それでもコードをコンパイルすることはできません。
より具体的には、を実装するクラスがありますINotifyChanged
。
PropertyChanged
クラスをモックして、イベントが発生したかどうかをテストするにはどうすればよいですか? public event EventHandler<PropertyChangedEventArgs>
このエラーが発生するため、イベントを書き直すことはできません。
エラー 1 'CoreServices.Notifier' はインターフェイス メンバー System.ComponentModel.INotifyPropertyChanged.PropertyChanged' を実装していません。「CoreServices.Notifier.PropertyChanged」は「System.ComponentModel.INotifyPropertyChanged.PropertyChanged」を実装できません。「System.ComponentModel.PropertyChangedEventHandler」の一致する戻り値の型がないためです。
java - ローカル変数としてインスタンス化されたクラスをモックする方法
データベースに対して操作を実行するためにいくつかのDAOクラスを呼び出すビジネスメソッドのテストを書いています。
このメソッドは、最初にDataSourceオブジェクトからJDBC接続を取得します。同じ接続がすべてのDAOインスタンスに渡されるため、これを使用してトランザクションを制御できます。したがって、すべてが正しく機能する場合は、接続オブジェクトに対してcommit()を呼び出す必要があります。
commit()が呼び出されるかどうかをテストしたいので、それをチェックする期待値(JMockを使用しています)を作成することを考えました。しかし、Connectionクラスは私のBusinessクラスの直接の隣人ではないので、これを行う方法がわかりません。
誰かがこれを克服する方法を知っていますか?このためのいくつかのJMock機能、またはこれを克服することを可能にするいくつかの代替設計がありますか?
ありがとう
.net - rhino-mocks - 良いサンプルアプリ
rhino-mock のチュートリアルについていくつか質問があったことは知っています。しかし、ado.net を使用した n 層ビジネス アプリケーションのコンテキストで rhino-mocks を使用するサンプル アプリが世の中にあるのではないかと考えています。
チュートは良いと思いますが、全体像にすべてをまとめているようには見えません. そこで、全体像をまとめたサンプルアプリを探しています。
また、データ アクセス層のロジックのモックとテストを具体的に扱う例が少し不足していると思います。
乾杯アンソニー
asp.net - HttpContext のモックが機能しない
コントローラーの Request.IsAuthenicated 呼び出しを単体テストできるように、HttpContext をモックアウトしようとしています。Scott Hanselman のブログで見つけたコードを使用して、rhino.mocks を使用して HttpContext をシミュレートしています。だから私はこのユニットテストピースを持っています:
私のコントローラーアクションでは
if(Request.IsAuthenticated)....
、単体テストを実行しようとすると、テストが null 例外をスローして失敗し、単体テストをデバッグしようとすると、HttpContext がコントローラーに割り当てられていないことがわかります。何か案は?