RB Ruby  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Тестирование с RSpec и Minitest

Тест «Тестирование с RSpec и Minitest» проверяет чтение кода, объяснение причин, поиск скрытых рисков, выбор исправления и работу с граничными сценариями. В нём 25 вопросов, 14 заданий с Ruby-кодом и 5 тематических шкал.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 5 тематических результатов и разбор всех ответов.
Вопрос 1 из 25
Какое описание результата точно соответствует показанному коду «Структура примера»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Структура примера
# Проследите выполнение и выберите точный результат.
class Counter
  def initialize = @n = 0
  def next = @n += 1
end

# Эквивалент независимой подготовки
p Counter.new.next
p Counter.new.next
Вопрос 2 из 25
Какой вариант верно описывает состояние объектов после выполнения кода «Матчеры»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Матчеры
# Проследите выполнение и выберите точный результат.
items = []
before = items.size
items << :new
after = items.size
p [before, after, after - before]
Вопрос 3 из 25
Какой фактический результат даст этот фрагмент по теме «Подмены»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Подмены
# Проследите выполнение и выберите точный результат.
class Greeting
  def initialize(clock) = @clock = clock
  def call
    @clock.hour < 12 ? 'morning' : 'evening'
  end
end
clock = Struct.new(:hour).new(9)
p Greeting.new(clock).call
Вопрос 4 из 25
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Общие контексты»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Общие контексты
# Проследите выполнение и выберите точный результат.
implementations = [
  -> { [1, 2, 3] },
  -> { (1..3).to_a }
]
implementations.each do |factory|
  value = factory.call
  p [value.first, value.size]
end
Вопрос 5 из 25
Разберите выражения по порядку. Как завершится фрагмент из раздела «Совместимость версий»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — Совместимость версий
# Проследите выполнение и выберите точный результат.
class Service
  def call(input, strict: false) = [input, strict]
end
p Service.instance_method(:call).parameters
Вопрос 6 из 25
Какой отказ связан с причиной в коде, а не с внешним шумом, в теме «Структура примера»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Структура примера
# Обычный запуск проходит. Найдите скрытый риск.
class Counter
  def initialize = @n = 0
  def next = @n += 1
end

# Эквивалент независимой подготовки
p Counter.new.next
p Counter.new.next
Вопрос 7 из 25
Что может сломаться при переносе этого решения «Матчеры» в рабочую систему? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Матчеры
# Обычный запуск проходит. Найдите скрытый риск.
items = []
before = items.size
items << :new
after = items.size
p [before, after, after - before]
Вопрос 8 из 25
Какое допущение делает этот код по теме «Подмены» ненадёжным? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Подмены
# Обычный запуск проходит. Найдите скрытый риск.
class Greeting
  def initialize(clock) = @clock = clock
  def call
    @clock.hour < 12 ? 'morning' : 'evening'
  end
end
clock = Struct.new(:hour).new(9)
p Greeting.new(clock).call
Вопрос 9 из 25
Какое скрытое условие делает фрагмент «Общие контексты» хрупким? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Общие контексты
# Обычный запуск проходит. Найдите скрытый риск.
implementations = [
  -> { [1, 2, 3] },
  -> { (1..3).to_a }
]
implementations.each do |factory|
  value = factory.call
  p [value.first, value.size]
end
Вопрос 10 из 25
Какой риск не исчезает после успешного запуска кода «Совместимость версий»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Совместимость версий
# Обычный запуск проходит. Найдите скрытый риск.
class Service
  def call(input, strict: false) = [input, strict]
end
p Service.instance_method(:call).parameters
Вопрос 11 из 25
Какое общее правило связывает результат и риск в разделе «Структура примера»? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 12 из 25
Какой принцип темы «Матчеры» переносится на другие примеры того же типа? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 13 из 25
Какой контракт нужно помнить при ревью кода по теме «Подмены»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 14 из 25
Почему показанный фрагмент «Общие контексты» ведёт себя именно так? Нужен вариант без логического разрыва между первой и второй частью.
Вопрос 15 из 25
Какой механизм отделяет верный разбор от похожего, но ошибочного объяснения «Совместимость версий»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
Вопрос 16 из 25
Какой рефакторинг переводит правило «Структура примера» из договорённости в проверяемый контракт? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Структура примера
# Выберите изменение, которое исправляет причину.
class Counter
  def initialize = @n = 0
  def next = @n += 1
end

# Эквивалент независимой подготовки
p Counter.new.next
p Counter.new.next
Вопрос 17 из 25
Какое действие добавляет недостающую гарантию в блоке «Матчеры»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Матчеры
# Выберите изменение, которое исправляет причину.
items = []
before = items.size
items << :new
after = items.size
p [before, after, after - before]
Вопрос 18 из 25
Какое изменение устраняет причину проблемы в теме «Подмены», а не маскирует симптом? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Подмены
# Выберите изменение, которое исправляет причину.
class Greeting
  def initialize(clock) = @clock = clock
  def call
    @clock.hour < 12 ? 'morning' : 'evening'
  end
end
clock = Struct.new(:hour).new(9)
p Greeting.new(clock).call
Вопрос 19 из 25
Что следует изменить в решении «Общие контексты», чтобы закрыть исходный риск? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Общие контексты
# Выберите изменение, которое исправляет причину.
implementations = [
  -> { [1, 2, 3] },
  -> { (1..3).to_a }
]
implementations.each do |factory|
  value = factory.call
  p [value.first, value.size]
end
Вопрос 20 из 25
Какое инженерное решение лучше всего соответствует механизму «Совместимость версий»? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 21 из 25
Какой контрпример проверит реальную границу механизма «Структура примера»? Нужен вариант без логического разрыва между первой и второй частью.
Вопрос 22 из 25
Какой граничный сценарий лучше всего проверит решение по теме «Матчеры»? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 23 из 25
Чем дополнить базовый тест, чтобы проверить ограничение темы «Подмены»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Вопрос 24 из 25
Что следует добавить в набор проверок по теме «Общие контексты», чтобы поймать редкий отказ? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Вопрос 25 из 25
Какой случай покажет, что исправление «Совместимость версий» не держится на удачном входе? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу