問題タブ [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.

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

ruby-on-rails - スタブ化されたメソッドが before_create コールバック内で nil を返す

モデルで before_create コールバックをテストするのに行き詰まっています。

私のスペック

これが私のモデルのコードです

before_filter メソッドが呼び出されていますが、そのコールバック内でアカウント メソッドのスタブ化が機能していないようです。私はテストしました

じ結果で。どうしたの?

ちなみに、Rails 2.3 と rspec-Rails 1.3.4 を使っています。

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

ruby-on-rails - RSpec Stub は、ネストされた複数の Describe ブロックをカバーしていません

次のような構造のテスト スイートがあります。

最初のテストは DateTime(now) == base_time ですが、2 番目のテストは DateTime(now) == my computer's date-time であり、スタブが有効ではないことを示しています。stub!呼び出しを各ループに移動するとdescribe問題は解決しますが、記述どおりに機能しない理由を理解したいと思います。

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

ruby-on-rails - コメントは削除されたユーザーに属します。「プレースホルダー」を関連付ける方法は?

私のコメントはユーザーによって投稿されます。Commentbelongs_to :userと User has_many :comments

ただし、ユーザーは削除できます。完了したら、コメントを削除するのではなく、そのコメントを 1 人のダミー ユーザーに関連付けます。

私はいくつかの方法を考えることができます:

  • コメントの読み込み時に、関連付けられたユーザーが見つからない場合は、メモリ内にダミー データを使用してユーザーを作成します。
  • コメントの読み込み時に、関連付けられたユーザーが見つからない場合は、データベースから事前定義されたユーザーを選択します。
  • コメントを削除すると、すべてのコメントがデータベース内の定義済みのユーザーに関連付けられます。いくつかの投稿フィルターを介して。

私の感覚では、1 番が最もクリーンだということです。他の 2 つは、コードに組み込まれているデータベース内のユーザーを必要とするためです。ユーザー 18394 がその「特別な」ユーザーになる場合、その特別なユーザーにはあらゆる種類のセーフティネットが必要になります。

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

cucumber - モックとスタブはキュウリのステップ間で存続できますか?

と呼ばれるサードパーティのAPIに依存するアプリがありますPSCが、キュウリのテストをPSCへのAPI呼び出しから分離したいと考えています。

それで、私はいくつかのキュウリのステップを書きました:

...そして、これらのスタブが行うことになっているのは、CucumberシナリオにAPI呼び出しが機能していると思わせることです。ただし、スタブはステップ間で持続しないように見えるため、私のシナリオの以降のステップではスタブされた戻り値を取得せず、実際のAPI呼び出しを行おうとするため、失敗します。

少なくともシナリオ全体でスタブを持続させる方法はありますか?私は他のCucumberテストでスタブをうまく使用したので、それらが一般的に機能することはわかっていますが、スタブを提供することを目的とするCucumberステップを作成したのはこれが初めてです。

0 投票する
4 に答える
15077 参照

ruby-on-rails - テスト中にファクトリーガールまたはスペックファイルでモデルをスタブする必要がありますか?

私が遭遇するほとんどすべてのスペックファイルは、次のようなものを書くことになります。

つまり、Factory.buildから取得したモデルは完全に有効です。しかし、そのようなものをスタブしないと、ファイルシステムに保存され、テストしていないものを検証します...

つまり、次のようなことを行う方がクリーンだと思います。

工場内でスタブすることさえ可能であるならば。

モデルをスタブする適切な方法は何ですか?

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

ruby-on-rails - コントローラーテストでのスタブワーデン

コントローラのテストとWardenの使用に問題があります。

すべての例はスタブを指していrequest.env['warden']ます。これにより、を呼び出すときにコントローラーで問題が発生し、env['warden']が返されますnil

大まかな例として、これを使用します。

そして、このような単純なビフォアフィルター:

取得しnilます。

私はそれを使用controller.env['warden'] = ...して動作させることができました、そしてそれは動作します。これは理にかなっています。コントローラーレベルにあるので、私の質問は、すべての例を見たときに何が機能しないのかということだと思います。

私はこれを持っていますspec_helper

どんな助けでも素晴らしいでしょう!

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

c# - Rhino で ref 引数を使用して void を返すメソッドをスタブする方法

次の例のように、メソッドが void を返す場合、ref 引数を使用してメソッドをスタブする方法が見つかりません。

何か考えはありますか?

ありがとう、ステニオ

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

ruby - ruby (rspec) でファイルの読み取りを単体テストするには、どの戦略を使用する必要がありますか?

次のように、非常に大きなファイルを1行ずつ処理する(つまり、ファイルをメモリにロードできない)Rubyメソッドがあります。

ベスト プラクティスに従って、このメソッドがファイル システムに依存することは望ましくありません。以前にスタブを使用したことがありますが、ここでどのように使用すればよいかわかりません。私は次のものと同等のものを使用すると思います:

{something} が何かよくわかりません。

私はrspectを使用しています。どんな支援もいただければ幸いです。ありがとう。

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

zend-framework - Zend Framework アプリケーションの PHPUnit でのスタブとモッキング

Zend Framework と PHPUnit は初めてです。レガシー アプリケーションを MVC アーキテクチャに変換し、単体テストを作成しようとしています。私は単体テストの概念にある程度精通していますが、一般的にスタブとモックにこだわっています。たとえば、次のことを検討してください

テストしようとしているコントローラー アクションで、メンバー ID を渡します。次に、ID を使用してメンバー オブジェクトを初期化します。次に、メンバー オブジェクトに関連付けられたいくつかのメソッドを呼び出し、戻り値をビュー オブジェクトに割り当てます。

メソッドの戻り値をカスタマイズできるように、テストで $member 変数をモックするにはどうすればよいですか?

ここでの私の理解が間違っている場合は、いくつかのガイダンスをいただければ幸いです。

ありがとうございました!

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

ruby-on-rails - ActiveRecord::Base メソッドがどのように使用されるかを仮定せずに、どのようにスタブ化しますか?

ActiveRecord::Baseオブジェクトの検索と保存の両方のための複数のメソッドを備えた大規模な古い API があります。たとえば、AR::Bオブジェクトはいくつかのメソッドからインスタンス化されている可能性があります。

  • Foo.new(…)
  • Foo.create(…)
  • Foo.find(…)
  • Foo.find_by_sql(…)
  • Foo.find_[all_]by_*(…)
  • bar.foos(協会)
    • …もちろん、関連付けに関するファインダ メソッド

同様に、問題のオブジェクトは、いくつかの異なる方法で永続化される場合があります。

  • foo.createまたfoo.create!
  • foo.saveまたfoo.save!
  • foo.update_attributesまたfoo.update_attributes!

ここで、単体テストを作成するときは、外部メソッドの呼び出しをスタブ化して、テストで問題のメソッドのビジネス ロジックに集中できるようにすることをお勧めします。ただし、AR::Bコントローラー単体テストなどでオブジェクトを操作する場合は、上記のメソッドのいずれかにコミットする必要があるように思われますが、実際にはメソッドのビジネス ロジックに関する限り重要ではありません。あなたが選ぶ。

メソッドの動作をその実装とこれほど緊密に結合する必要がありますか、それとも単純なものが欠けていますか?