У меня есть действие контроллера с некоторыми переменными экземпляра, которые я хочу, чтобы проверить, вот мой код действия:RSpec не получает правильное значение экземпляра вар
def index
@users_list = get_response('accounts/by_tag/QuickcallAdmin')['users'].to_a
@credit_admin = [email protected]_list.select{|h| h['email'] == current_user.email}.blank?
@accounts_emails = Account.pluck(:email)
end
и код спецификации:
describe 'GET #index' do
login_user
let(:account) {create(:account)}
it 'responds with 200' do
get :index, :format => :html
controller.instance_variable_set(:@users_list, [{"id"=>2, "email"=>"[email protected]", "tenant_id"=>1,"first_name"=>"valera","last_name"=>"rotari","phone_number"=>"89439438954", "tags"=>[{"name"=>"Program", "value"=>"my_company"}, {"name"=>"ProgramAdmin", "value"=>"new_program"}, {"name"=>"ProgramAdmin", "value"=>"new_program1"}, {"name"=>"QuickcallAdmin", "value"=>"q1"}, {"name"=>"CreditAdmin", "value"=>"q1"}]}])
expect(assigns(:credit_admin)).to eql(true)
expect(assigns(:accounts_emails)).to eql(["[email protected]"])
end
end
, так что вы можете видеть, что я пытаюсь назначить некоторый хэш, который я обычно получаю от ответа на вызов api, и после этого, чтобы узнать, имеет ли значение credit_admin и account_emails vars правильное значение. Проблема в том, что если я pus некоторые помещает в spec после назначения var, я вижу, что мое значение назначено, но тест терпит неудачу, потому что переменная admin admin является ложной и ожидается как истина. Я получил тот же код и положил его на консоль rails, чтобы сделать тест для себя, обратите внимание, что я использую тот же хеш, и у меня есть правильное истинное значение. Таким образом, похоже, что @users_list var не назначен правильно или что-то вроде этого. Также @account_email - пустой массив, но у меня есть учетная запись, созданная с завода, поэтому у нее должно быть какое-то значение в ней, кажется для них общей проблемой
Вы устанавливаете данные после запуска 'index'. –
когда я перемещаю controller.instance_variable_set перед индексом, я буду иметь эту переменную как пустой массив после индекса – maki