вызвать конкретный URL с помощью rspec - PullRequest
6 голосов
/ 16 декабря 2010

Я хочу создать запрос на получение в rspec.

    get :exec, {:query=>"bla",
      :id => "something",
      :user_id => "user"
    }

Это создает URL-адрес вроде: /user/query/something/exec?query=bla

Дело в том, что мой контроллер проверяет полученный запросURL должен выглядеть следующим образом: /user/query/something/_XXX_/exec?query=bla

Как я могу сделать что-то подобное в rspec?(XXX жестко запрограммирован в файле rout.rb.)

1 Ответ

16 голосов
/ 17 декабря 2010

Я предполагаю, что вы имеете в виду спецификацию контроллера.

Когда вы передаете хеш, как в вашем примере, ключи будут сопоставлены с переменными в ваших маршрутах. Для любого ключа, который не соответствует маршруту, пара ключ / значение будет добавлена ​​в виде строки запроса.

Например, предположим, у вас есть это в вашей спецификации:

get :exec, :query => 'foo', :id => '1', :user_id => 42

И у вас есть это в ваших маршрутах (стиль Rails 3):

match '/exec/:user_id/:id' => 'whatever#exec'

Затем спецификация заменит введенные вами пары ключ / значение и смоделирует запрос по следующему пути:

/exec/42/1?query=foo

Итак, чтобы связать ваши спецификации с вашими маршрутами, просто убедитесь, что вы правильно сопоставляете имена переменных в ваших маршрутах с параметрами в вашем запросе спецификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...