Rails:キュウリとアプリケーションコントローラーのメソッド

Darkisa

私はCucumberを使用して統合テストを行っています。私のApplicationController中にcurrent_userは、現在のユーザーオブジェクトを提供するというメソッドがあります。このオブジェクトを使用して、redisデータベースにアイテムを追加します。

$redis.sadd("cart#current_user.id}", [1,5,2])

私のキュウリのステップでは、この機能をテストします。

Then /^the redis database should have "(.+)" item ids/ do |count|
  expect($redis.smembers("cart#{current_user.id}").count).to eq count.to_i
end

ただし、Cucumberは、コントローラーメソッドが下ApplicationControllerにある場合でも、コントローラーメソッドにアクセスできないことを理解しています。そのためcurrent_user、コントローラーで使用する方法でメソッドを使用することはできません

現在行っているのは、機能をテストしているため、データベースにはユーザーが1人しかないため、current_user.idは常に1になりますが、ユーザーを追加し始めると、これはうまく機能しない可能性があります。

これに対する回避策はありますか?

ディアボリスト

ここで意図したようにキュウリを実際に使用していない。現在行っているのは、アプリケーションが現在どのように機能するかをテストすることですが、実際には、アプリケーションの機能とその重要性を指定するには、Cukesを使用するのが最適です。

現在の問題により適切な使用法を適用すると、次の質問につながります

IDをRedisに保存する理由は何ですか?これらのIDを保存することで、顧客はどのようなメリットを得ることができますか?

ユーザーがログアウトした場合でも、戻ってきたときにバスケットにデータが入力されるように、バスケットを保存している可能性があります。次に、シナリオは次のようになります

Scenario: Remember products in basket
  Given I am registered
  And I am logged in
  When I put some products in my basket
  And I log out
  And I log in again
  Then my basket should still have some products in it

シナリオがあなたがしていることとその重要性についてのすべてであることに注意してください。しかし、これがどのように行われるかについては何も明らかにしていません。これは、シナリオを批評するための本当に良い方法です。HOWのものを含むシナリオは、書くのが難しく、維持するのがはるかに難しくなります。とにかくそれで十分です:)

これで、たとえば1つのステップでユーザーを変数に割り当て@i = create_registered_user、他のステップでそのユーザーを使用するなど、標準的なキュウリのものを使用できます。login as: @i

データベースではなく、ユーザーに表示されるものだけを調べ、この機能がシナリオでどのように機能するかについては何も明らかにしていないことに注意してください。

機能がどのように機能するかを明らかにし、データベースで結果を調べるテストを(シナリオではなく)作成したい場合は、rspecの方が適していると思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ドレーパーデコレーターとアプリケーションコントローラーでのメソッドの使用

分類Dev

別のアプリケーションのWebブラウザコントロールからドキュメントデータを取得する

分類Dev

アプリケーションメニュードロップダウンのキーボードショートカット

分類Dev

WindowsCEプラットフォームの「コンソールアプリケーションウィンドウ」

分類Dev

他のコントローラーのアプリケーションコントローラーで定義された呼び出しメソッド

分類Dev

RailsAPI-アプリケーションコントローラーメソッドをDRYに保つ

分類Dev

アプリケーションコントローラにはどのようなプロパティとメソッドがありますか?

分類Dev

コンソールアプリケーションからコントローラーのメソッドを呼び出す方法

分類Dev

フラグメントのロード時にアプリケーションがクラッシュする

分類Dev

アプリケーションコントローラーレールのプライベートメソッド

分類Dev

アプリケーションコントローラーでメソッドをテストする方法は?私のアプローチでは、他のテストがランダムにクラッシュします

分類Dev

アプリケーションのアプリコンストラクターとonStartメソッドの違いは何ですか?

分類Dev

ホスト型/クラウドソリューション用のデータベースとアプリケーションの設計

分類Dev

ウィンドウアプリケーションのC#でPDFドキュメントを開く

分類Dev

アプリケーション開始メソッドのJavafxエラー例外コントローラーが指定されていません

分類Dev

アプリケーション開始メソッドのJavafxエラー例外コントローラーが指定されていません

分類Dev

外部のドキュメントルートからCakePHPアプリケーションをロードする

分類Dev

メニューバーとアプリケーションに表示されるウィンドウコントロールを停止する方法

分類Dev

ミニテスト-レンダリングなしでアプリケーションコントローラーメソッドをテストする

分類Dev

Laravel / Lumenコアアプリケーションのオーバーライドメソッド

分類Dev

アプリケーションからクラウド機能でドキュメントを更新する

分類Dev

フラグメントにコードを書くとアプリケーションがクラッシュするのはなぜですか?

分類Dev

ボケセッションとドキュメントのポーリング

分類Dev

ブートストラップドロップダウンメニューがangularjsスパアプリケーションで折りたたまれない

分類Dev

WatchOS2コンプリケーションのスケジュールされたアップデートをバックグラウンドで

分類Dev

MVCアプリケーションとコントローラーの設計

分類Dev

Xcode7ベータ版iOS9でエラーが発生する「アプリケーションウィンドウには、アプリケーションの起動時にルートビューコントローラーが必要です」

分類Dev

Spring MVCのコントローラメソッドにカスタムセキュリティアノテーションを追加する方法

分類Dev

突然アプリがログアウトする:「アプリケーションの起動終了時にルートビューコントローラー」

Related 関連記事

  1. 1

    ドレーパーデコレーターとアプリケーションコントローラーでのメソッドの使用

  2. 2

    別のアプリケーションのWebブラウザコントロールからドキュメントデータを取得する

  3. 3

    アプリケーションメニュードロップダウンのキーボードショートカット

  4. 4

    WindowsCEプラットフォームの「コンソールアプリケーションウィンドウ」

  5. 5

    他のコントローラーのアプリケーションコントローラーで定義された呼び出しメソッド

  6. 6

    RailsAPI-アプリケーションコントローラーメソッドをDRYに保つ

  7. 7

    アプリケーションコントローラにはどのようなプロパティとメソッドがありますか?

  8. 8

    コンソールアプリケーションからコントローラーのメソッドを呼び出す方法

  9. 9

    フラグメントのロード時にアプリケーションがクラッシュする

  10. 10

    アプリケーションコントローラーレールのプライベートメソッド

  11. 11

    アプリケーションコントローラーでメソッドをテストする方法は?私のアプローチでは、他のテストがランダムにクラッシュします

  12. 12

    アプリケーションのアプリコンストラクターとonStartメソッドの違いは何ですか?

  13. 13

    ホスト型/クラウドソリューション用のデータベースとアプリケーションの設計

  14. 14

    ウィンドウアプリケーションのC#でPDFドキュメントを開く

  15. 15

    アプリケーション開始メソッドのJavafxエラー例外コントローラーが指定されていません

  16. 16

    アプリケーション開始メソッドのJavafxエラー例外コントローラーが指定されていません

  17. 17

    外部のドキュメントルートからCakePHPアプリケーションをロードする

  18. 18

    メニューバーとアプリケーションに表示されるウィンドウコントロールを停止する方法

  19. 19

    ミニテスト-レンダリングなしでアプリケーションコントローラーメソッドをテストする

  20. 20

    Laravel / Lumenコアアプリケーションのオーバーライドメソッド

  21. 21

    アプリケーションからクラウド機能でドキュメントを更新する

  22. 22

    フラグメントにコードを書くとアプリケーションがクラッシュするのはなぜですか?

  23. 23

    ボケセッションとドキュメントのポーリング

  24. 24

    ブートストラップドロップダウンメニューがangularjsスパアプリケーションで折りたたまれない

  25. 25

    WatchOS2コンプリケーションのスケジュールされたアップデートをバックグラウンドで

  26. 26

    MVCアプリケーションとコントローラーの設計

  27. 27

    Xcode7ベータ版iOS9でエラーが発生する「アプリケーションウィンドウには、アプリケーションの起動時にルートビューコントローラーが必要です」

  28. 28

    Spring MVCのコントローラメソッドにカスタムセキュリティアノテーションを追加する方法

  29. 29

    突然アプリがログアウトする:「アプリケーションの起動終了時にルートビューコントローラー」

ホットタグ

アーカイブ