У меня есть контроллер рельсов, который я хотел бы проверить методом test_method
.
class ActiveController < ActionController::Base
def test_method
user = acc_users.all_users.find params[:id]
if !user.active?
user.call_method!
end
end
end
Я должен проверить, что call_method
не вызывается. Это то, что я придумал, но я не думаю, что это сработает.
it "should not call call_method" do
u = user(@acc)
put :test_method, :id => u.id
expect(u).not_to have_received(:call_method!)
end
Я следил за этим вопросом здесь и обнаружил, что он почти аналогичен, за исключением того, что вызываемый метод находится в другом классе. Когда я пытаюсь выполнить приведенный выше код, я получаю сообщение об ошибке типа «Ожидается, что объект ответит на has_received?
»
Я полагаю, что не смогу проверить это с данной настройкой, поскольку пользователь не вводится вtest_method
.
call_method
- это вызов метода, который ставит в очередь задание, поэтому я хочу быть уверенным, что он не будет вызван.
Как мне провести тестирование этого метода?