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

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

ruby - シナトラとルビーでラックタイムアウトをテストする

これは簡単なことだと思っていましたが、rack-timeout gem のテストに関して問題が発生しています。いくつかのロジックを実行するエンドポイントを持つシナトラ基本クラスがあります。

Rack-timeout gem の詳細については、こちらを参照してください。失敗するまでに数秒以上かかることがわかっているリクエストを送信できるテストをセットアップしようとしています。

これまでのテストはこちら

これを行う方法はいくつかありますが、それらがどのように実装されるかはわかりません

  1. {sleep 3} へのテストの一部として '/dosomething' メソッドをオーバーライドします
  2. 上記と同じことを行いますが、スタブ ライブラリまたはモッキング ライブラリを使用します。
  3. テストで get "/dosomething" を使用する代わりに、リクエストを開いたままにする net::http レスポンスを作成します。

これについての考えは非常に高く評価されます。

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

node.js - 自動テストを作成したことがないのですが、ビヘイビア駆動開発をどのように開始すればよいですか?

私は何年にもわたってたくさんの言語でプログラミングをしてきましたが、一般的にはかなり上手だと思います。ただし、自動テストを作成したことはありませ。単体テスト、TDD、BDD、何もありません。

私は自分のプロジェクトに適切なテストスイートを書き始めようとしました。変更を加えた後、プロジェクト内のすべてのコードを自動的にテストできることの理論的価値を確認できます。RSpecやMochaなどのテストフレームワークが、前述のテストのセットアップと実行を合理的に簡単にする方法を理解できます。また、テストを作成するために提供されるDSLが気に入っています。

しかし、コードのどの部分に対しても実際の単体テストを作成することはできませんでした。私が書いたものは、実際に役立つ方法で非常にテスト可能であるようには思えません。

  • 関数は、それらが使用されているコンテキストの外ではあまり呼び出せないようです。私が作成する多くの関数は、HTTPリクエスト呼び出し、データベースクエリ、またはその他の簡単にテストできない呼び出しを行います。
  • 一部の関数はHTMLの文字列を返します。HTML文字列を同じ文字列のハードコードされたバージョンと比較することはできますが、それはコードのその部分を変更する能力を制限しているように見えます。さらに、テストコードに大量のHTMLが含まれていると、混乱します。
  • モック/スパイオブジェクトをメソッドに渡し、それらが特定のメソッド呼び出しを取得することを確認できますが、それは私が「テスト」しているメソッドの実装の詳細をテストしているだけです。

適切なBDDテストを開始するにはどうすればよいですか?(MochaとNode.jsを使用してこれを実行したいのですが、BDDに関する一般的なアドバイスも問題ありません。)

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

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:

しかし、それは間違いなく答えではありません:)。

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

ruby - 混合クラスメソッドがRSpecとMochaで呼び出されていることをテストする方法は?

モジュールがあります:

次のようにクラスで使用されます。

MyCommand.executeその呼び出しを確認するにはどうすればよいdo_somethingですか? モカで部分的なモッキングを試みましたが、呼び出されなくても失敗しませんdo_something:

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

ruby-on-rails - 特定のインスタンス変数に値がある場合にのみ、インスタンスのメソッドをスタブするにはどうすればよいですか?

私はオブジェクトを持っていますMyObject:

resultsの場合にのみメソッドをスタブしたいstat_to_load = "times"。どうやってやるの?私は試した:

しかし、それは機能しません。何か案が?

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

ruby - インスタンス変数でメソッドをスタブする方法は?

だから私はこの単純なルビークラスを持っています:

そして、実装の分離でRequest2つのメソッドを受け取ることをテストしたいと思います。そのために、いくつかのスタブを使用しようとしています:send_chainRequestAuthorizerRequestFilter

何が間違っているかがわかります。stubs(:new)が返され、インスタンス変数のnilインスタンスがなく、エラーが発生します。インスタンス変数でメソッドをスタブ化する方法がわかりません。助言がありますか?RequestAuthorizerRequestFilterGetRequestList

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

ruby - RubyでMochaを使用して実際のObject#method呼び出しをモックする方法は?

脳と直接やり取りするのは簡単ではないので、いくつかの依存関係の反転を使用して、ゲートウェイ パターンを少し使用しています。

NumberCruncherBrain私のクラスのラッパーです。

ただし、テスト時にエラーが発生します。

NameError: クラス `Mocha::Mock' の未定義のメソッド `multiply_by_100'

これがテストです

私はそれが&@brain.method(:multiply_by_100)コールとモカがmethod_missing何かを使用して動作するためだと仮定しています。唯一の解決策は、セットアップを変更することのようです

しかし、私はこの解決策がひどいと思います。ぐちゃぐちゃになりFake*、テスト全体に大量のクラスが配置されます。モカでこれを行うより良い方法はありますか?

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

ruby-on-rails - mocha を使用して多くの条件をテストする

mocha gemを使用して次のようなメソッドをテストする最良の方法は何ですか?

「AND」条件と「OR」条件をテストするベスト プラクティスはありますか? すべての可能性をカバーするために多くのテストを作成する必要がありますか、それともすべてをカバーするオプションが必要ですか?


Rails 4 + テストユニットを使用しています。

たとえば、&&のみのテストがある場合:

私はテストしています:

問題は、「OR」条件がある場合です。最初のメソッド ( can_create? ) では、それはできません。

( owner? および member? メソッドは true/false になる可能性があるため)。