ActiveRecordメソッドのアサートは、RSpecを使用したクラスメソッドを介して呼び出されます

トミゼクスターソン

私がやりたいことはかなり単純なことのように思われることに困惑しています。私は非常に単純なクラスを持っています:

class User
  def self.find_by_search(query)
    query = query.to_s.strip

    if query.upcase.start_with?("USER")
      find(query)
    else
      find_by(name: "*#{query}*")
    end
  end
end

そのロジックをテストしたいので、findまたはfind_byが期待されるパラメーターで呼び出されることを表明する必要があります。私はいくつかのことを試しました:

User.find_by_search("USER0000")
expect(ActiveRecord::Base).to receive(:find)

User.find_by_search("USER0000")
expect(User).to receive(:find) # didn't really think this would work, but figured I'd try anyway

どちらも結果として

expected: 1 time with any arguments
received: 0 times with any arguments

私はここで何か馬鹿げたことをしているに違いありませんが、それを理解できないようです。

サンパット・バード

expect().to receive()操作を実行する前に定義する必要があります。

expect(User).to receive(:find) 
User.find_by_search("USER0000")

expect(...)。to receive(...)についてもっと読む

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

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

編集
0

コメントを追加

0

関連記事

RTTIを介して保護されたメソッド(コンストラクター)を呼び出す

Swiftのさまざまなクラスを介してデリゲートメソッドを呼び出す

そのメソッドがrspecを使用して別のメソッド内で呼び出されたことをテストします

xUnitを使用してメソッドが呼び出されたことをアサートします

UITableViewは、呼び出されていないいくつかのオーバーライドされたメソッドをサブクラス化します

PowerMockitoは、モックされたプライベートメソッドではなく実際のメソッドを呼び出しています

呼び出されている複数のメソッドをアサートします。コンストラクターのみが機能します

C#のタスクを介して反映されたメソッドを呼び出す方法は?

継承されたメソッドはプライベートメソッドを呼び出します

継承されたメソッド(Java)を呼び出すときに、サブクラスはスーパークラスまたはサブクラスのメソッドを使用しますか

メソッドをオーバーライドして基本型にキャストした後、どのメソッドが呼び出されますか?

パラメータとして指定されたC ++クラスメソッドを呼び出す方法は?

式を使用して作成されたリストのSelectメソッドを呼び出し、Selectメソッド内で渡されたFunc <>を使用します

パラメータとしてサブクラスのみを許可するテンプレート化されたメソッドの呼び出し

nunitを使用してメソッドが呼び出されたかどうかをアサートする方法

サブクラスのメソッドを呼び出すために使用されるスーパークラス参照を決定します

Rspecは、メソッドを呼び出さずにメソッドが呼び出されたかどうかをチェックします

RSpecを使用してコントローラーメソッドでクラスが呼び出されることをテストする方法

リフレクションを介してネストされたdeepobjectメソッドを呼び出す

ソフトウェア全体で適切なパラメータを使用してメソッドが呼び出されることをテストします

jQueryUI + jQtree、ネストされたリストのメソッドの呼び出しは親と子のメソッドを呼び出します

buildQueryを使用して、ContentProviderを介して公開されたデータベースのクエリメソッドを呼び出す

Laravel4のartisanコマンドを介して呼び出されたクラスメソッドから情報テキストを出力する方法

Javascript:これを使用してクラスのメソッドを呼び出す

別のクラスを介してメソッドを呼び出す

シリアル化されたオブジェクトを使用してサービスメソッドを呼び出す

メソッド呼び出しは、クラスの関数呼び出しとして解決されます

Javaは、クラス外のプライベートまたは保護されたメソッドの呼び出しを防ぎます

EasyMock / PowerMockを使用してプライベートメソッド内でvoidメソッドが呼び出されたことを確認します

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ