Автоматизированные тесты / Пишем соцсеть на Ruby On Rails 6 #5

Поділитися
Вставка
  • Опубліковано 20 тра 2024
  • Это пятый эпизод, где мы пишем социальную сеть на Ruby On Rails версии 6. В этом видео мы пишем тесты для модели постов, а так же end-to-end тесты для интерфейса.
    Коррекция: в этом видео я по инерции поместила файлы с end-to-end тестами в папку test/integration, как многие делали до появления SystemTestCase фреймворка, но вообще для них нужно создать подпапку test/system. Подробнее о фреймворке для системных тестов Rails 6 можно узнать из этого выступления (англ): • RailsConf 2017: Buildi...
    Исходники: github.com/overeng/rubysocial
    Таймкоды:
    00:00 Зачем нужны автоматизированные тесты
    01:40 Unit-тесты
    03:05 Интеграционные тесты
    04:23 End-to-end (blackbox) тесты
    05:45 Как загружать тестовые данные в базу: fixtures и factories
    07:42 Установка FactoryBot и разбор синтаксиса factory
    10:30 Тесты модели Post
    15:41 End-to-end тесты и фреймворк Capybara
    Привет, меня зовут Ксения, и я бэкенд разработчица. У меня есть опыт разработки больших проектов на разных языках программирования: Ruby, C#, Java, Perl и Python. Сейчас я живу в Германии и работаю в Github. На своем канале я рассказываю про карьеру в IT, бэкенд программирование и жизнь за границей.

КОМЕНТАРІ • 23

  • @studiosus23
    @studiosus23 3 роки тому +1

    Привет, Ксения! Спасибо за видосы. У меня появился вопрос касаемо интеграционных и системных тестов:
    В данном уроке ты пишешь интеграционные тесты в папке integration и наследуешь класс теста от ApplicationSystemTestCase, а не от ActionDispatch::IntegrationTest.
    В документации rails от ApplicationSystemTestCase наследуются системные тесты. Не могла бы ты объяснить почему наследуешься именно от ApplicationSystemTestCase, а не от ActionDispatch::IntegrationTest? Спасибо

    • @OverEngineer
      @OverEngineer  3 роки тому +1

      Привет! Наследуюсь от ApplicationSystemTestCase именно потому, что это системные (end-to-end) тесты, а насчет того, что они не должны лежать в папке integration ты абсолютно прав. System test case framework появился в Rails недавно, а до этого такие тесты (которые в браузере) часто помещали в папку integration, сейчас их нужно класть в папку system, и как-то это ускользнуло о моего внимания, спасибо за комментарий. Обновлю описание.

  • @Mugen88888
    @Mugen88888 3 роки тому +4

    Ты классная, надеюсь ты из депрессии уже вылезла! Видео очень интересные, не тормози! 😘😍

  • @oleksandrasaskia
    @oleksandrasaskia 3 роки тому

    Смотрю твои видео просто взахлёб! Очень конкретно, предметно, без каких-либо заумных высказываний! Просто супер.

  • @user-fe6on8ro2j
    @user-fe6on8ro2j 3 роки тому +1

    спасибо за Ваш труд!

  • @antnbaranov
    @antnbaranov 3 роки тому

    Только появился вопрос и сразу ответ 😂 лайк за оперативность

  • @alexanderzakorko3500
    @alexanderzakorko3500 3 роки тому

    спасибо ! очень кстати оказалось видео !

  • @timoraivonen1848
    @timoraivonen1848 3 роки тому

    Лайк.

  • @eldarmustafaiev2103
    @eldarmustafaiev2103 Рік тому

    Привет, Ксения! Подскажи, в какую базу сохраняются посты, созданные при запуске тестов capybara, и удаляются ли они автоматически ?

  • @leroymarmelou7107
    @leroymarmelou7107 3 роки тому

    красотка

  • @megaman13able
    @megaman13able 3 роки тому

    Я наверно пропустил, а с каким движком тут взаимодействует капибара? Я так понимаю можно юзать разные варианты: selenium, puppeteer или ещё что нибудь

    • @OverEngineer
      @OverEngineer  3 роки тому +1

      не пропустили, я этого не касалась в видео. Да, там три драйвера можно выбрать - selenium, webkit и racktest

  • @Nixguy
    @Nixguy 3 роки тому +1

    Небольшое дополнение:
    Если вы пишите тесты, то стоит полагать, что все используемые библиотеки, фреймворки и прочий код от третьих лиц работает верно, и нам писать для него тесты не нужно. Если все-таки такие тесты приходится писать часто и много, то не стоит такой код от третьих лиц использовать, вы просто тратите свое время впустую.
    Насчет тестов моделей:
    В примере из видео получается, что тестируются сами валидаторы, а не модель. Т.е. проверяется, а действительно ли верно отработают валидаторы, если оставить одно поле пустым, а длина другого поля привысит лимит символов. Да! Они отработают! Валидаторы уже протестированы разработчиками Rails.
    На мой взгляд, необходимо проверять наличие этих валидаторов и их параметров в классе модели явно. А для этого нет необходимости даже создавать экземляр класса модели, можно (и даже нужно) тестировать сам класс.
    Пример для RSpec:
    describe Post do
    describe '#title' do
    it { is_expected.to validate_presence_of(:title) }
    it { is_expected.to validate_length_of(:title).is_at_most(300) }
    end
    end
    Скорей всего, и Minitest тоже умеет что-то подобное.
    В итоге, мы проверяем имеет ли модель необходимые нам вызовы методов с нужными параметрами из DSL, который помогает нам описывать правила валидации.

    • @kvn47
      @kvn47 9 місяців тому

      Надеюсь, сейчас то вы и сами знаете, что ваши тесты делают то же самое, а не то, что вы думали🙂 Они ведь так же создают экземпляр класса и вызывают у него метод valid?
      is_expected создаёт экземпляр, а validate_* делает остальную "магию" (и это, кстати, делает уже не rspec, а shoulda matchers, который и в Minitest тоже работает).

  • @YogeshSharma-zv7cr
    @YogeshSharma-zv7cr 3 роки тому

    Please add english captions!

  • @johny_doe
    @johny_doe 3 роки тому +1

    ты просто няшка. У тебя есть парень?)

    • @maxsh2602
      @maxsh2602 3 роки тому +3

      Эээээкыш, я первый придумал альфонснуться через неё в Германию

    • @user-or1hy4xz8u
      @user-or1hy4xz8u Рік тому

      @@maxsh2602 "альфонснуться" - ну и слово придумал, угар )))))

  • @user-oc7py1vy6s
    @user-oc7py1vy6s 3 роки тому

    Копать узкоспециализированный контент. Нужно ли писать тесты, если в соло работаешь над проектом? Если да то зачем? Ты же и так "тестируешь код" по мере того как его пишешь.

    • @OverEngineer
      @OverEngineer  3 роки тому +2

      конечно, нужно!
      >>Ты же и так "тестируешь код"
      кавычки в правильном месте поставлены. код можно протестировать вручную только теоретически :)