Это немного больше насмешек и цепочек, чем я предпочитаю, но вы можете сделать это:
subjects = [...]
desc_mock = double("desc order mock")
desc_mock.should_receive(:desc).with(:created_at).and_return(subjects)
conditions = {...}
Subject.should_receive(:all).with(conditions).and_return(desc_mock)
Вы также можете упростить это, переместив запрос в именованную область, которая принимает некоторые параметры.Тогда ваш тест может проверить, что Субъект получил вашу область с правильными параметрами, такими как:
Subject.should_receive(:user_company).with(current_user.id).and_return(subjects)