問題タブ [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 - nokogiri xml検索メソッドをスタブ化することは可能ですか?
次のようなメソッドがあるとしましょう。
xml_resp_mockを作成し、連鎖呼び出しをスタブ化して.at('StatusCode').text「成功」を返すことは可能ですか?可能であれば、使用する構文がわかりません。
ruby-on-rails-3 - モデルからコントローラ テストを分離する
基になるモデル クラスを作成する前に、コントローラーのテストとクラスを作成することは可能ですか (そして合理的ですか)? その方法についてのメモを見たと思いましたが、今はレシピが見つかりません。
たとえば、次のコントローラーを考えてみましょう。
基盤となる前提モデルと前提を作成する前に、このコントローラー コードをテストできますか? 以下がうまくいかないことは承知しています -- どのように書き直しますか (可能であれば)?
アップデート
考えれば考えるほど、クラスを定義する必要があること、つまりコードがクラスを参照する必要があることを確信しました。そこで、質問を「テストを実行するために基礎となるデータベース テーブルを作成する必要はありますか?」に変更します。PremisePremisesControllerpremisesPremisesController
現時点では、それを回避する良い方法がわかりません (PremisesControllerコードを変更しないと、テストのポイントが無効になります)。たとえば、データベースにアクセスして列名をフェッチするrespond_with呼び出しの呼び出しです。@premise.has_errors?の内部メソッドをスタブする意思がない限りActiveRecord、DB へのヒットを回避する方法がわかりません。
しかし、私はそれ以外のことを示したいと思っています。
ruby-on-rails - 特定のモックインスタンスのすべてのメソッドをどのようにスタブしますか
サードパーティによって処理されている特定のモックがあります。同じモックが戻ってきたことを確認したいだけです。
ただし、サードパーティは配列メソッドを呼び出し、私のテストでは実際には気にしないメソッドを保存します。すべてのメソッドがその特定のモックインスタンスで行うことを期待/スタブすることをモックに伝える方法はありますか?
例えば。
ありがとう!
編集
問題に関する詳細情報:
テスト:
テストされているコード:
私がテストしているものに直接関係しない以下をモックする必要があります:
ruby-on-rails - RSpec / Railsでクラスメソッドをスタブするのに問題がある(そしてスタブで動的リターンを使用する)
こんばんは、
クラスメソッド「is_male_alive?」を呼び出す「Simulation」クラスでかなり長いメソッドをテストしようとしています。と「is_female_alive?」私の「年齢」クラスで数百回。これらのクラスメソッドの戻り値は統計に基づいており、テストが毎回同じように実行されるように、特定の値を返すようにそれらをスタブ化したいと思います。
Age.rb:
(女性バージョンは基本的に同じですが、いくつかの異なる定数があります)
私の「シミュレーション」クラスでは、次のことを行います。
シミュレーションの各反復で-基本的には、年齢を過ぎて(たとえば、is_male_alive?(56))、trueまたはfalseを返します。
これらの2つの方法をスタブ化して、次のようにします。
- is_male_alive?75未満の引数の場合はtrueを返し、それ以外の場合はfalseを返します。
- is_female_alive?80未満の引数の場合はtrueを返し、それ以外の場合はfalseを返します。
私はそれをスタブする能力があるかどうかを確認するために以下を試しました(simulation_spec.rb):
しかし、次のエラーが発生します。
また、スタブされた戻り値が引数に基づいて動的に生成されるように設定する方法もわかりません。procでこれを行う方法はありますか?
Ageクラス全体をモックする方法はありますか(Ageクラスの単一のインスタンスをモックするだけではありませんか?)
ご協力いただきありがとうございます!!
更新1
このメソッドの呼び出しに問題があるようです...これは本当に混乱します。それが呼び出されているかどうかを実際に確認するために、メソッドに「raiseArgumentError」をスローしました。
開発環境(コンソール):
したがって、argumenterrorをスローしたため、開発環境でこのメソッドを明確に呼び出しています。
私のテストでこれをもう一度実行しましたが、それでもメソッドが呼び出されていないと言っています...以下のコードを使用しています:
私もこれを試しました
何かご意見は?
logging - RSpec:Railsロガーメッセージの期待をテストする方法は?
Railsロガーが私の仕様のいくつかでメッセージを受信することをテストしようとしています。私はLogginggemを使用しています。
私がこのようなクラスを持っているとしましょう:
そして次のような仕様:
次の失敗メッセージが表示されます。
仕様を通過させるために、いくつかの異なるアプローチを試しました。これは、たとえば次のように機能します。
しかし、そのようなアクセス可能なインスタンス変数を設定する必要があるのは、尻尾がここで犬を振っているようです。(実際、ロガーを@logにコピーすると合格する理由すらわかりません。)
ロギングをテストするための良い解決策は何ですか?
ruby - should_receive は予期しないことをしますか?
次の 2 つの自明なモデルを考えてみましょう。
そして、次の Rspec テスト:
このテスト (または類似のテスト) を実行すると、スタブが機能していないように見えます。
ご想像のとおり、失敗は上記の「ここでエラー」とマークされた行にあります。should_receive行をコメント アウトすると、このエラーは表示されなくなります。どうしたの?
ruby - オブジェクトのコンストラクターが別のオブジェクトを作成するときのスタブ
ですから、非常に単純化された、次のようなコードがあります。
つまり、Aをオプションで初期化すると、Bが作成され、変更されたオプションのセットが渡されます。
B.newが正しい引数を取得することをテストしたいと思います。現在、RSpec / RRを使用して、次のように実行しています。
しかし、これには2つの問題があります。
Bまず、実際のオプションを使用しての実際のコピーをインスタンス化することはできません。ブロック内でB.newを呼び出すと、スタブバージョンが呼び出され、スタックがポップするまでループします。スタブの前に設定することはでき@b = B.newますが、テストのポイントを破って、渡されるオプションがまだわかりません。
(そして誰かが私にそれを呼びかける前に:はい、厳密な単体テストの教義では、AのテストはBのすべてのメソッドをスタブ化する必要があり、多くをスタブ化する必要があるということは、そもそもコードが悪いことを意味します。)
第二に、後で別のブロックに入れるのshouldではなく、テストのセットアップに入れるのは間違っていると感じます。it ... do ... endしかし、実際のB(上記を参照)を作成できないため、構築後の状態を実際に調べることもできません。
何か案は?
javascript - Javascript 単体テストの依存関係 - 依存オブジェクトが変更されたときにテストを失敗させる方法
モデル プロパティに依存するコントローラーがあります。このコントローラーをテストしてモデルをスタブ化するテストを作成しました。モデルのプロパティ名が変更されるたびにコントローラーのテストを失敗させるにはどうすればよいですか?
次に例を示します。
モデル:
コントローラ:
コントローラーのテスト:
「name」プロパティが「name2」などの別のものに変更されるたびに、このテストが失敗するようにします。
JavaScriptでそれを行う方法について、誰かが良い提案を得ましたか?
ありがとう、シャイ
unit-testing - テストされたクラスからメソッドをスタブして、別のメソッドをテストします
スタブとモックがテストに非常に役立つことを発見しました。しかし、私は一つのことについて疑問に思います。例ではっきりとわかると思います。
このようなことをするのは賢明ですか?テストされたクラスのスタブメソッド。または多分それはいくつかのルールを破りますか?
PS。コードをリファクタリングできません
javascript - シノンスタブを簡単にクリーンアップ
モカのbeforeEachブロックできれいに動作するすべてのシノンスパイモックとスタブを簡単にリセットする方法はありますか?
サンドボックスはオプションだと思いますが、これにサンドボックスを使用する方法がわかりません