Rspec путаница "valid_session"? - PullRequest
0 голосов
/ 30 мая 2018

Я только учусь, как выполнять тестирование контроллера / интеграции Rspec, и я заметил множество примеров, которые выглядят примерно так:

let(:valid_attributes) { { name: 'John Doe', age: 32, title: 'Manager', startData: Time.now } }

let(:valid_session) { {} }

затем что-то вроде:

  describe "POST #create" do
    it "create user" do
      post :create, params: {:valid_attribute}, session: valid_session
      expect(response).to redirect_to login_url
    end
  end

Это правильно?Средняя часть - это то, что params проходит правильно?(Где вызывается :valid_attribute? Много раз я вижу на get запросах, где это пусто? Я предполагаю, что передача параметра в запросе get просто добавит его к URL-адресу, например /login/?=something

В любом случае мои вопросы звучали так:

  1. В середине, где определены параметры (я полагаю), мне нужно назвать модель? IE: должно ли это быть params: {:valid_attribute} или params:{:user :valid_attribute}

  2. Я немного сбит с толку, почему я вижу session, определенный, особенно когда он пуст?"вошел в систему ... но почему мы пропускаем пустой? (я вижу это на многих примерах)

Если есть более правильный способ написать это,я знаю. Я только сейчас погружаюсь в них!

Спасибо

Как вид, я вижу различные формы get или post. Иногда это будет get '/index', но иногда этоget :index. Какой правильный путь? Я предполагаю, что rspec сопоставляет символ для теста контроллера с действующимДействие контроллера.

1 Ответ

0 голосов
/ 31 мая 2018

Лично я всегда удаляю их из вновь сгенерированных спецификаций и записываю данные, которые хочу отправить, в каждое получение / публикацию в спецификации.И это valid_attribute без :.Думайте о let как о каком-то методе, который вы вызываете.

post :create, params: {user: {email: 'tom@example.com'}}
get :index
get :index, params: {email: 'example.com', active: true}

Сессионная часть, ну, если вы не используете что-то вроде тестовых помощников из devise, но вы бросаете свой собственный.Вам это едва понадобится, поэтому просто удалите его.

get '/index' и get :index должны быть равны, но я предпочитаю :index, как и документация rspec .

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