次のメソッドのロジックがクエリが渡されるかどうかに関係なく機能することをテストするモデル仕様で、いくつかのテストを作成しようとしています。
models/payment.rb
include PgSearch
pg_search_scope :search,
:against => [:id, :transaction_id],
:using => {:tsearch => {:prefix => true, :dictionary => "english"}},
:associated_against => {user: [:email, :name]}
def self.text_search(query)
if query.present?
search(query)
else
scoped
end
end
ここに、私が書こうとしている種類のテストの例を示しますが、これを達成するための最良の方法を空白にしています。
/spec/models/payment_spec.rb
describe '#text_search' do
it "works when query is passed in" do
payments = Payment.text_search(stub(:query))
payments.should_not be_nil
# is this even a good test??
end
it "still works if nothing is passed in" do
payments = Payment.text_search(nil)
payments.should_not be_nil
# same here, does this spec test for anything helpful??
end
end