2013-10-17 2 views
0

Я пытаюсь заглушить результаты запроса, чтобы получить некоторые записи. Вот запрос:rspec stub запись запроса

ouid = OrganizationalUnit.where("billing_id = ? AND status = 'active'", data[:billing_id]).select(:id) 
user_id = User.where("group_id in (14,17) AND organizational_unit_id in (?) AND status = 'active'", ouid).select(:id).first 

Я пытаюсь незавершенным его с этим:

ou_value = double'fake ou',{ 'id' => '654321' } 
    select_double = double 'fake select', {'select' => [ou_value]} 
    OrganizationalUnit.stub(:where).and_return(select_double) 

Это не работает. Мой запрос к пользовательской таблице выглядит следующим образом:

SELECT id FROM `users` WHERE (group_id in (14,17) AND organizational_unit_id in ('--- !ruby/object:RSpec::Mocks::Mock\n__null_object: false\nname: fake ou\noptions:\n :__declared_as: Double\n') AND status = 'active') LIMIT 1 

, где он должен выглядеть следующим образом:

SELECT id FROM `users` WHERE (group_id in (14,17) AND organizational_unit_id in (654321) AND status = 'active') LIMIT 1 

Что я делаю неправильно?

Благодаря

ответ

1

так что вы хотите окурок этот запрос:

OrganizationalUnit.where("billing_id = ? AND status = 'active'", data[:billing_id]).select(:id) 

я думаю, что это должно быть

OrganizationalUnit.stub_chain(:where, :select).and_return(654321) 

другое дело: это всегда хорошая идея, чтобы двигаться искатели в методах или областей в модели. делая это, еще проще заглушить или искупить материал для тестирования.

+0

совершенное спасибо – rstewart8

Смежные вопросы