問題タブ [stubbing]
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.
ruby-on-rails - Mocha を使用したアプリケーション コントローラー メソッドのモック/スタブ (Shoulda、Rails 3 を使用)
コントローラーの機能テストを作成しているときに、テストの 1 つが必要とするデータベースからの情報を要求する before_filter があるシナリオに出くわしました。Factory_girl を使用してテスト データを生成していますが、明示的に必要とされていないときにデータベースにアクセスすることは避けたいと考えています。また、ここで before_filter メソッドをテストすることも避けたいと思います (別のテストでテストする予定です)。私が理解しているように、モック/スタブはこれを達成する方法です。
私の質問は、このシナリオでこのメソッドをモック/スタブする最良の方法は何ですか。
私の before filter メソッドは、URL で見つかったサブドメインに基づいてデータベース内のサイトを探し、コントローラーで使用されるインスタンス変数を設定します。
このメソッドを before_filter として使用するコントローラー:
ご覧のとおり、@site
(before_filter によって) 設定される変数に依存しています。@site
ただし、テスト中は、が設定されており、関連付けられたページが少なくとも 1 つある (によって検出された)ことをテストで想定したいと思います@site.pages
。load_site_from_subdomain
後でメソッドをテストしたいと思います。
これが私のテストで得たものです(ShouldaとMochaを使用):
これにより、テスト結果にエラーが表示され、@site
nil であることがわかります。
私はこれについて間違った方法で進んでいるように感じます。サイトを単に Factory.create するだけでデータベースに存在するようにするのは簡単ですが、前述のように、テストを迅速に行うためにデータベースの使用を減らしたいと考えています。
.net - スタブとモッキングに入る
私はスタブとモックについて学ぶことを考えていて、.Net で利用可能なライブラリのいくつかを知っています: RhinoMocks、Moq、TypeMock... とはいえ、スタブとモックの違いはまだはっきりしていません。 、私はそれがそこにあることを知っています、そして私はいつでもそれについてグーグルすることができました.
TDDなどに関係なく、知りたいのですが:
学習曲線はそれだけの価値がありますか? 期待や、この状況で見返りが得られるものについて、すべての細かい詳細を学習できるかどうかはわかりません。
「ダミーの実装」を手動で作成するよりも生産上の利益は大きくなりますか? クラスを動的にモック/スタブ化する方が高速なので、そう思います。
どのライブラリをお勧めしますか? Moq の方が簡単なようです。
ダミーにとって最適なリソース (チュートリアル、本、ビデオなど) はどれですか?多かれ少なかれ最新のものですか? ライブラリについて知りたくないのですが、最後のリリースをダウンロードすると、表示されている API のほとんどが無効になっていることに気付きます。
すべてに感謝します。
java - Mockito re-stub メソッドは既に thenthrow でスタブ化されています
私はmockitoで問題に遭遇しました。私はWebアプリケーションを開発しています。私のテストでは、ユーザー管理は嘲笑されています。getLoggedInUser()
メソッドによって返される User を変更しなければならない場合があります。
問題は、私のgetLoggedInUser()
メソッドも . をスローできることAuthenticationException
です。
したがって、ユーザーなしから一部のユーザーに切り替えようとすると、への呼び出し
userProvider.getLoggedInUser()
すでにスタブ化されているため、例外をスローしますthenTrow()
when
例外を気にしないようにメソッドに指示する方法はありますか?
前もって感謝します - István
java - Mockitoのデフォルトのスタブ
予期しない値が与えられたときにデフォルト値を返すようにメソッドをスタブするにはどうすればよいですか?
例えば:
パート2:上記と同じですが、例外をスローします:
上記の例では、最後のスタブが優先されるため、マップは常にデフォルトを返します。
android - Androidで「スタブ」を実装する最良の方法は何ですか?
オブザーバーを登録してイベントをリッスンする Android アプリケーションを作成しています。おそらく、この前の質問でのマークの提案の 1 つを使用します。
ただし、私の質問は、アプリケーション オブザーバーでイベントを発生させるために使用できる「スタブ」を Android で作成するにはどうすればよいかということです。この例では、アプリが Wi-Fi の信号強度をリッスンしていると仮定します。エミュレーター (またはデバイス) で実行する何かを作成する必要があります。 /弱い信号、そしてそれを私のアプリに中継します。
助言がありますか?
ruby-on-rails - should_receive とともに stub_chain
メソッド呼び出しチェーンで、メソッドの 1 つが特定のパラメーターを取得するかどうかをテストしようとしています。たとえば、以下のコードでは、 MyModel は method のパラメーター 0 を受け取る必要がありますoffset
。残念ながら、以下のコードは機能しません。should_receive と stub_chain を混在させることはできないようです。どうすればこれを解決できますか?RSpec2を使用しています。
私がテストしようとしているコード:
アップデート
RSpec の Google グループにも質問を投稿し、David (RSpec の作成者) が回答しました (David に感謝): http://groups.google.com/group/rspec/browse_thread/thread/6b8394836d2390b0?hl=en
c# - これをユニットテストするにはどうすればよいですか?
かなり単純なアルゴリズムを開発する必要がありますが、そのテストを最適に作成する方法としては少し混乱しています。
一般的な説明:ユーザーはプランを削除できる必要があります。プランにはタスクが関連付けられています。これらも削除する必要があります(まだ実行されていない場合)。
アルゴリズムの動作としての擬似コード:
私が理解している限り、単体テストはデータベースにアクセスしたり、一般的に外部システムへのアクセスを必要としたりすることは想定されていないため、ここでは2つのオプションがあると思います。
1)リポジトリ呼び出しをモックアウトし、それらがアサートとして適切な回数呼び出されているかどうかを確認します
2)両方のリポジトリクラスのスタブを作成し、それらの削除フラグを手動で設定してから、適切なオブジェクトが削除対象としてマークされていることを確認します。
どちらのアプローチでも、大きな問題は次のとおりです。ここで正確に何をテストしているのでしょうか。そのようなテストが私に与えるであろう追加の価値は何ですか?
これに関する洞察をいただければ幸いです。これは、RhinoMocksを使用する必要がありますが、技術的には特定の単体テストフレームワークにリンクされていません。しかし、私は一般的な説明を好みます。そうすれば、これに頭を適切に巻き付けることができます。
ruby-on-rails - スペック内の Paperclip S3 リクエストのスタブ化
画像のアップロードに Paperclip と S3 を使用しており、テスト スイートから S3 への呼び出しをスタブ化しようとしています。私はやっていることに言及している思考ボットの投稿を見つけました
しかし、それは「引数の数が間違っています(2に対して4)」というエラーが表示されます。上記の引数を配列に切り替えてみました。これにより、元のエラーが削除されましたが、「属性は既に定義されています: paperclip_fixture」というエラーが表示されます。
誰もこれを機能させることができましたか? また、理想的には、開発環境にローカル ファイルシステムを使用したいと考えています。これを行う簡単な方法はありますか?
ruby - Mocha を使用してスタブ化されたメソッドに引数として渡されたオブジェクトを取得する
基本的に、そのオブジェクトの値を検査するために、スタブ化されたメソッドに引数として渡されたオブジェクトを調べたいと思います。私の状況ではFoo.expects(:bar).with({:abc => 123})
、オブジェクトが互いに等しくないことがわかっているため、使用できません。引数のサブ値を比較したいだけです。
確かにこれは可能ですが、ここで構文や戦略が見つかりません。
rspec - Rspec コントローラー テストでコントローラー アクションをスタブしますが、まだ実行されています
before_filter でリダイレクトが発生することなく、コントローラー アクションが実際に呼び出されるかどうかをテストしたいと思います。コントローラー アクション自体がリダイレクトを実行する可能性があるため、アクションをスタブして特定のエラー (SuccessfulActionError など) を発生させ、メソッドが呼び出されたことを示すインジケーターとしてそのエラーをチェックします。
だから私は以下を追加しました:
何らかの形で機能し、例外が発生していますが、メソッド内の実際のコードは引き続き実行されます (たとえば、存在しないレコードの ID を「表示」アクションに送信すると、ActiveRecord::RecordNotFound 例外がスローされます) )。
何故ですか?として実装されているかのように、アクションを完全にスタブしたい
私は何を間違っていますか?これは間違ったアプローチですか?
編集:
使用する
どちらも機能しません。
ApplicationController から取得されない default_url_options を修正するために、このように before_all フィルターで Controller を上書きします。
それが犯人でしょうか?残念ながら、それを削除すると、仕様はまったく機能しません。