私がやりたいことはかなり単純なことのように思われることに困惑しています。私は非常に単純なクラスを持っています:
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]
コメントを追加