問題タブ [ruby-mocha]
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 - シナトラとルビーでラックタイムアウトをテストする
これは簡単なことだと思っていましたが、rack-timeout gem のテストに関して問題が発生しています。いくつかのロジックを実行するエンドポイントを持つシナトラ基本クラスがあります。
Rack-timeout gem の詳細については、こちらを参照してください。失敗するまでに数秒以上かかることがわかっているリクエストを送信できるテストをセットアップしようとしています。
これまでのテストはこちら
これを行う方法はいくつかありますが、それらがどのように実装されるかはわかりません
- {sleep 3} へのテストの一部として '/dosomething' メソッドをオーバーライドします
- 上記と同じことを行いますが、スタブ ライブラリまたはモッキング ライブラリを使用します。
- テストで get "/dosomething" を使用する代わりに、リクエストを開いたままにする net::http レスポンスを作成します。
これについての考えは非常に高く評価されます。
node.js - 自動テストを作成したことがないのですが、ビヘイビア駆動開発をどのように開始すればよいですか?
私は何年にもわたってたくさんの言語でプログラミングをしてきましたが、一般的にはかなり上手だと思います。ただし、自動テストを作成したことはありません。単体テスト、TDD、BDD、何もありません。
私は自分のプロジェクトに適切なテストスイートを書き始めようとしました。変更を加えた後、プロジェクト内のすべてのコードを自動的にテストできることの理論的価値を確認できます。RSpecやMochaなどのテストフレームワークが、前述のテストのセットアップと実行を合理的に簡単にする方法を理解できます。また、テストを作成するために提供されるDSLが気に入っています。
しかし、コードのどの部分に対しても実際の単体テストを作成することはできませんでした。私が書いたものは、実際に役立つ方法で非常にテスト可能であるようには思えません。
- 関数は、それらが使用されているコンテキストの外ではあまり呼び出せないようです。私が作成する多くの関数は、HTTPリクエスト呼び出し、データベースクエリ、またはその他の簡単にテストできない呼び出しを行います。
- 一部の関数はHTMLの文字列を返します。HTML文字列を同じ文字列のハードコードされたバージョンと比較することはできますが、それはコードのその部分を変更する能力を制限しているように見えます。さらに、テストコードに大量のHTMLが含まれていると、混乱します。
- モック/スパイオブジェクトをメソッドに渡し、それらが特定のメソッド呼び出しを取得することを確認できますが、それは私が「テスト」しているメソッドの実装の詳細をテストしているだけです。
適切なBDDテストを開始するにはどうすればよいですか?(MochaとNode.jsを使用してこれを実行したいのですが、BDDに関する一般的なアドバイスも問題ありません。)
ruby-on-rails - スタブ グレープ ヘルパー
Grape API を使用した Rails アプリがあります。
インターフェイスは Backbone で行われ、Grape API がすべてのデータを提供します。
返されるのはユーザー固有のものだけなので、現在ログインしているユーザーへの参照が必要です。
簡略版は次のようになります。
API の初期化:
終点:
API ヘルパー:
ご覧のとおり、Warden から現在のユーザーを取得すると、正常に動作します。しかし、問題はテストにあります。
ヘルパーのメソッド *current_user* を特定のユーザーでスタブするにはどうすればよいですか?
私は試した:
- env/request を設定していますが、 getメソッドを呼び出す前には存在しません。
- MyAPI::APIHelpers#current_user メソッドを Mocha でスタブ化する
- MyAPI::Endpoints::Notes.any_instance.stub を Mocha でスタブ化する
編集:現時点では、次のようにスタブ化されています:
仕様:
仕様/パッチ/api_helpers.rb:
しかし、それは間違いなく答えではありません:)。
ruby - 混合クラスメソッドがRSpecとMochaで呼び出されていることをテストする方法は?
モジュールがあります:
次のようにクラスで使用されます。
MyCommand.execute
その呼び出しを確認するにはどうすればよいdo_something
ですか? モカで部分的なモッキングを試みましたが、呼び出されなくても失敗しませんdo_something
:
ruby-on-rails - 特定のインスタンス変数に値がある場合にのみ、インスタンスのメソッドをスタブするにはどうすればよいですか?
私はオブジェクトを持っていますMyObject
:
results
の場合にのみメソッドをスタブしたいstat_to_load = "times"
。どうやってやるの?私は試した:
しかし、それは機能しません。何か案が?
ruby - インスタンス変数でメソッドをスタブする方法は?
だから私はこの単純なルビークラスを持っています:
そして、実装の分離でRequest
2つのメソッドを受け取ることをテストしたいと思います。そのために、いくつかのスタブを使用しようとしています:send_chain
RequestAuthorizer
RequestFilter
何が間違っているかがわかります。stubs(:new)
が返され、インスタンス変数のnil
インスタンスがなく、エラーが発生します。インスタンス変数でメソッドをスタブ化する方法がわかりません。助言がありますか?RequestAuthorizer
RequestFilter
GetRequestList
ruby - RubyでMochaを使用して実際のObject#method呼び出しをモックする方法は?
脳と直接やり取りするのは簡単ではないので、いくつかの依存関係の反転を使用して、ゲートウェイ パターンを少し使用しています。
NumberCruncher
Brain
私のクラスのラッパーです。
ただし、テスト時にエラーが発生します。
NameError: クラス `Mocha::Mock' の未定義のメソッド `multiply_by_100'
これがテストです
私はそれが&@brain.method(:multiply_by_100)
コールとモカがmethod_missing
何かを使用して動作するためだと仮定しています。唯一の解決策は、セットアップを変更することのようです
しかし、私はこの解決策がひどいと思います。ぐちゃぐちゃになりFake*
、テスト全体に大量のクラスが配置されます。モカでこれを行うより良い方法はありますか?
ruby-on-rails - mocha を使用して多くの条件をテストする
mocha gemを使用して次のようなメソッドをテストする最良の方法は何ですか?
「AND」条件と「OR」条件をテストするベスト プラクティスはありますか? すべての可能性をカバーするために多くのテストを作成する必要がありますか、それともすべてをカバーするオプションが必要ですか?
Rails 4 + テストユニットを使用しています。
たとえば、&&のみのテストがある場合:
私はテストしています:
問題は、「OR」条件がある場合です。最初のメソッド ( can_create? ) では、それはできません。
( owner? および member? メソッドは true/false になる可能性があるため)。