2016-04-13 2 views
0

Я пытаюсь проверить метод сценариев в моем шоу действияКак проверить этот запрос Rspec Ajax

def scenarios 
    @scenarios ||= fund.present? ? fund.scenarios : [] 
end 

def fund 
    @fund ||= funds.find_by(id: fund_id) 
end 

def fund_id 
    return nil unless params.fetch(:report, false) 
    params.fetch(:report).fetch(:fund_id, 0) 
end 

Я чувствую, что мне нужно, чтобы получить запрос Аякса и захватить Params из fund_id из нее, но Я не уверен, как это сделать, или если это то, что я предполагаю сделать

это мой мой запрос Ajax в моих JS файл

$('#geodistributions-filter-form-container') 
    .on('change', 'select#report_fund_id', function() { 
    $.get('/reports/geodistribution.js',        
    $(this).parents('form').serialize()); 
}); 

Я хочу проверить два контекста

контекст «сценарий, когда фонд нет»

контекст «сценарий, когда фонд присутствует»

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

ответ

1

Ну, если я правильно понял вас, вы хотите проверить, не вызваны ли ваши айакс. Вы можете использовать рамки приемных тестов, например Capybara, или просто проверить свой вызов на /reports/geodistribution.js URL-адрес, как и любой другой вызов контроллера. Настройте требуемую среду (с Fund, без Fund) и проверьте правильность ее поведения.

Я хотел бы также реорганизовать ваш код немного:

def scenarios 
    @scenarios ||= fund.try(:scenarios) : [] 
end 

def fund 
    # if there is no fund found, let it throw an exception 
    @fund ||= Funds.find(params[:report][:fund_id]) 
end 
+0

я в основном просто хочу, чтобы проверить, что метод сценариев в моем шоу действия ..... но для этого я должен получить идентификатор фонда из params, который передается моему запросу GET в моем javascript ... Я не уверен, как получить этот параметр fund_id в моих спецификациях, хотя = ( – user1502223

+0

Когда вы запрашиваете добавить '? report [fund_id] = 1' в URL. Лучше всего было бы издеваться над методом '.find()' вашей модели, чтобы возвращать или не возвращать Фонд. – Uzbekjon