Пожалуйста, медведь со мной, пока я даю некоторый фон на мой вопрос:Принудительно Single Rails контроллер действия Инвокации из RSpec примера
Я недавно был интегрирующим канкан в наше приложение и обнаружил, что один из тестов контроллера RSpec не удался. Оказывается, это было результатом плохого написания теста и одновременного вызова действия на контроллере.
it 'only assigns users for the organisation as @users' do
xhr :get, :users, { id: first_organisation.to_param}
expect(assigns(:users).count).to eq(3)
xhr :get, :users, { id: second_organisation.to_param}
expect(assigns(:users).count).to eq(4)
end
Примечание: пример сокращен для краткости.
Теперь причина этого не в том, что rspec использует один и тот же экземпляр контроллера для обоих вызовов действий, и CanCan загружает только ресурс организации, если он еще не загружен.
Я могу принять аргументацию за a) rspec, используя один экземпляр контроллера для области действия примера, и b) для CanCan будет только загрузка ресурса, если он не существует.
Настоящая проблема заключается в том, что, конечно, это плохая идея, чтобы вызывать действие дважды в одном примере. Теперь введение CanCan выявило ошибку в этом примере, но теперь я обеспокоен тем, что могут быть другие тесты контроллера, которые также вызывают действия дважды или что такие примеры могут быть написаны в будущем, что довольно долго наводит меня на мой вопрос:
Возможно ли, что пример rspec контроллера может вызывать только одно действие контроллера?