Функциональный тест должен проверять функцию каждого действия
(дан набор параметров)
Важно, чтобы ваши функциональные тесты были отделены от маршрутов.
(иначе какой смысл в абстракции маршрутизации в любом случае)
В test :: unit функциональный тест выглядит примерно так
test "#{action_name} - does something" do
#{http_verb} :#{action_name}, :params => {:their => "values"}
assert_response :#{expected_response}
end
Обратите внимание, мы нигде не упоминаем маршрутизацию.
Так что реальный пример для вашего создания
test "create - creates a session" do
get :create, :provider => "your provider"
assert_response :success
end
Rails захлебнется, если не сможет найти маршрут к этому запросу.
Если это не работает, я предлагаю вам проверить две вещи
- "get" - это правильный http глагол
- в вашем маршруте нет других обязательных параметров (я вижу: поставщик один)
Если я делаю что-нибудь дурацкое с маршрутизацией,
Я обычно добавляю отдельный тест.
test "create - routing" do
assert_recognizes({
:controller => "sessions",
:action => "create",
:provider => "yourProvider"
}, "/auth/yourProvider/callback")
end
Пока это соответствует вашему действию
все должно быть хорошо.