#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 и возвращать пользователя, которого я создал в своем тестовом примере. Но это поставило меня на правильный путь!