Чтобы упростить тестирование, вы должны переместить эту логику в метод класса в вашей модели клиента. Я также предполагаю, что у вас есть has_many :clients
в вашей модели пользователя, что подразумевает ваш запрос.
Что-то вроде:
class Client
def self.search_by_name(name)
all.where("name LIKE %?%", name).order("name ASC")
end
end
Тогда в вашем контроллере:
@clients = current_user.clients.search_by_name(params[:search])
Это позволит вам тестировать в модульном тесте, а не в интеграционном тесте.
client_spec.rb:
describe Client, 'searching by name' do
let(:current_user) { User.create!(...) }
let!(:client) { Client.create!(:name => 'client name', :user => current_user) }
it 'should find the clients by name' do
Client.search_by_name('client name').should include(client)
end
end
Тогда ваш интеграционный тест может просто заглушить метод search_by_name
и вернуть коллекцию макетов, упрощая тестирование.