Как обойти политики при тестировании с помощью hyperstack

#ruby-on-rails #ruby #reactjs #hyperstack

#ruby-on-rails #ruby #reactjs #hyperstack

Вопрос:

Я пытаюсь выполнить некоторые модульные тесты компонентов с помощью hyperstack и hyperspec.

Проблема в том, что у меня есть политики, которые блокируют выполнение теста?

Например, у меня есть политика, согласно которой только пользователь может просматривать свои собственные заказы.

Но если я действительно не усложню тест, войдя в систему пользователя (тогда это не совсем модульный тест) Я не вижу, как переопределить политику.

Я попытался ввести другую политику, before(:all) но rspec это не нравится.

Ответ №1:

Я не знаком с rspec, но вы должны иметь возможность имитировать пользовательский класс, чтобы притвориться, что он вошел в систему. (Или имитируйте любой объект, сообщающий о статусе входа в систему).

Например, если вы использовали rr, вы могли бы сделать что-то вроде

 any_instance_of(User) do |klass|
  stub(klass).logged_in? { true }
end
  

Просматривая документы rspec, похоже, вы могли бы сделать что-то вроде этого.

 allow_any_instance_of(User).to receive(:logged_in?).and_return(true)
  

Комментарии:

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