Skip to content

HeavyTechRuby/testing-rails-day1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

marp

Тестирование Ruby on Rails


День 1


Цель курса


Что вы узнаете


Для кого этот курс


Структура курса

  • 3 вебинара по 2 часа
  • теория + live coding
  • домашние задания

Инструменты

  • RSpec
  • FactoryBot
  • SimpleCov
  • DatabaseCleaner
  • Capybara + Selenium

Как добиться успеха?


Что такое автотест?


class Podcast
  attr_reader :subscribers

  def initiliaze
    @subscribers = []
  end

  def subscribe(user)
    @subscribers << user
  end
end

user = User.new
podcast = Podcast.new
podcast.subscribe user

puts podcast.subscribers.size # => 1

describe "Podcast" do
  it "allows to subscribe" do
    user = User.new
    podcast = Podcast.new
    podcast.subscribe user

    expect(podcast.subscribers.size).to eq(1)
  end
end

Почему нужны автотесты?

  • экономия времени
  • обнаружение бага на прод дороже
  • Страховка от регрессии
  • уверенность при рефакторинге
  • как документация

Почему разработчики избегают тестов?

  • у нас есть автотесты
  • нет времени на тесты
  • тесты не дают 100% гарантии
  • требования быстро меняются
  • тесты усложняют рефакторинг
  • проект слишком маленький
  • нет культуры в команде

Основы RSpec


Что такое RSpec


it "should calculate sum" do
  expect(1 + 1).to eq(2)
end

Почему RSpec


Установка


bundle add rspec
rspec --init

Демонстрация

  • простой тест
  • describe
  • context
  • формат doc/progress

Тестирование Model


Что тестировать

  • методы
  • валидация
  • scopes
  • ассоциации

Установка rspec-rails


bundle add rspec-rails
rails generate rspec:install

Тестироване методов модели


Тестироване валидаций модели


Тестироване scopes модели


Тестироване associations модели


FactoryBot


bundle add factory_bot_rails
rails generate factory_bot:model [Model]

Links

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published