💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 5 тематических результатов и разбор всех ответов.
Вопрос 1 из 25
Какое описание результата точно соответствует показанному коду «Структура примера»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Ruby Ruby — Структура примера Копировать
# Проследите выполнение и выберите точный результат.
class Counter
def initialize = @n = 0
def next = @n += 1
end
# Эквивалент независимой подготовки
p Counter.new.next
p Counter.new.next
Проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу. Это объясняется тем, что хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров.
Один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно. Это объясняется тем, что хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров.
Два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля. Это объясняется тем, что хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров.
Два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля. Это объясняется тем, что матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения.
Два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля. Это объясняется тем, что тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Вопрос 4 из 25
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Общие контексты»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Ruby Ruby — Общие контексты Копировать
# Проследите выполнение и выберите точный результат.
implementations = [
-> { [1, 2, 3] },
-> { (1..3).to_a }
]
implementations.each do |factory|
value = factory.call
p [value.first, value.size]
end
Внедрённый объект Clock определяет время результата без обращения к глобальным часам. Механизм результата таков: shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно. Механизм результата таков: shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно. Механизм результата таков: тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Снимки до и после показывают увеличение размера массива ровно на один элемент. Механизм результата таков: shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно. Механизм результата таков: подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации.
Вопрос 5 из 25
Разберите выражения по порядку. Как завершится фрагмент из раздела «Совместимость версий»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Ruby Ruby — Совместимость версий Копировать
# Проследите выполнение и выберите точный результат.
class Service
def call(input, strict: false) = [input, strict]
end
p Service.instance_method(:call).parameters
Проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу. Наблюдение согласуется с тем, что тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно. Наблюдение согласуется с тем, что тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу. Наблюдение согласуется с тем, что матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения.
Проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу. Наблюдение согласуется с тем, что shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля. Наблюдение согласуется с тем, что тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Вопрос 7 из 25
Что может сломаться при переносе этого решения «Матчеры» в рабочую систему? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Ruby Ruby — Матчеры Копировать
# Обычный запуск проходит. Найдите скрытый риск.
items = []
before = items.size
items << :new
after = items.size
p [before, after, after - before]
Stub любого экземпляра или цепочки методов позволяет невозможное взаимодействие и сохраняет зелёный тест после поломки настоящего интерфейса. Этот риск связан с тем, что матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения.
Проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его. Этот риск связан с тем, что матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения.
Проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его. Этот риск связан с тем, что тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его. Этот риск связан с тем, что хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров.
Глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера. Этот риск связан с тем, что матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения.
Вопрос 8 из 25
Какое допущение делает этот код по теме «Подмены» ненадёжным? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
Ruby Ruby — Подмены Копировать
# Обычный запуск проходит. Найдите скрытый риск.
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
Проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его. Уязвимое место возникает потому, что подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации.
Stub любого экземпляра или цепочки методов позволяет невозможное взаимодействие и сохраняет зелёный тест после поломки настоящего интерфейса. Уязвимое место возникает потому, что shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Stub любого экземпляра или цепочки методов позволяет невозможное взаимодействие и сохраняет зелёный тест после поломки настоящего интерфейса. Уязвимое место возникает потому, что подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации.
Stub любого экземпляра или цепочки методов позволяет невозможное взаимодействие и сохраняет зелёный тест после поломки настоящего интерфейса. Уязвимое место возникает потому, что тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера. Уязвимое место возникает потому, что подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации.
Вопрос 9 из 25
Какое скрытое условие делает фрагмент «Общие контексты» хрупким? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Ruby Ruby — Общие контексты Копировать
# Обычный запуск проходит. Найдите скрытый риск.
implementations = [
-> { [1, 2, 3] },
-> { (1..3).to_a }
]
implementations.each do |factory|
value = factory.call
p [value.first, value.size]
end
Глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера. К такому сбою приводит правило: shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его. К такому сбою приводит правило: shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера. К такому сбою приводит правило: тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера. К такому сбою приводит правило: подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации.
Обновление RSpec/Minitest вместе со всем деревом gem смешивает изменение тестового интерфейса с изменением приложения. К такому сбою приводит правило: shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Вопрос 10 из 25
Какой риск не исчезает после успешного запуска кода «Совместимость версий»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Ruby Ruby — Совместимость версий Копировать
# Обычный запуск проходит. Найдите скрытый риск.
class Service
def call(input, strict: false) = [input, strict]
end
p Service.instance_method(:call).parameters
Обновление RSpec/Minitest вместе со всем деревом gem смешивает изменение тестового интерфейса с изменением приложения. Источник риска: матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения.
Глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера. Источник риска: тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Обновление RSpec/Minitest вместе со всем деревом gem смешивает изменение тестового интерфейса с изменением приложения. Источник риска: shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки.
Общий изменяемый объект в `before(:all)` сохраняет состояние между примерами и делает результат зависимым от порядка. Источник риска: тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Обновление RSpec/Minitest вместе со всем деревом gem смешивает изменение тестового интерфейса с изменением приложения. Источник риска: тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум.
Вопрос 11 из 25
Какое общее правило связывает результат и риск в разделе «Структура примера»? Верный вариант не содержит частично правильной подмены причины или следствия.
Хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров. Поэтому один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно.
Тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум. Поэтому два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля.
Матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения. Поэтому два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля.
Хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров. Поэтому проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу.
Хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров. Поэтому два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля.
Вопрос 12 из 25
Какой принцип темы «Матчеры» переносится на другие примеры того же типа? Верный вариант не содержит частично правильной подмены причины или следствия.
Тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум. Из этого следует, что снимки до и после показывают увеличение размера массива ровно на один элемент.
Матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения. Из этого следует, что внедрённый объект Clock определяет время результата без обращения к глобальным часам.
Матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения. Из этого следует, что один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно.
Хороший пример теста формулирует одно наблюдаемое поведение, подготавливает минимальные данные и не зависит от порядка других примеров. Из этого следует, что снимки до и после показывают увеличение размера массива ровно на один элемент.
Матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения. Из этого следует, что снимки до и после показывают увеличение размера массива ровно на один элемент.
Вопрос 13 из 25
Какой контракт нужно помнить при ревью кода по теме «Подмены»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум. Наблюдаемое следствие: внедрённый объект Clock определяет время результата без обращения к глобальным часам.
Подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации. Наблюдаемое следствие: внедрённый объект Clock определяет время результата без обращения к глобальным часам.
Shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки. Наблюдаемое следствие: внедрённый объект Clock определяет время результата без обращения к глобальным часам.
Подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации. Наблюдаемое следствие: один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно.
Подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации. Наблюдаемое следствие: снимки до и после показывают увеличение размера массива ровно на один элемент.
Вопрос 14 из 25
Почему показанный фрагмент «Общие контексты» ведёт себя именно так? Нужен вариант без логического разрыва между первой и второй частью.
Shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки. Именно поэтому внедрённый объект Clock определяет время результата без обращения к глобальным часам.
Тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум. Именно поэтому один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно.
Shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки. Именно поэтому два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля.
Подмена полезна на границе медленного или недетерминированного сотрудничества, но проверка внутренних вызовов связывает тест со способом реализации. Именно поэтому один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно.
Shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки. Именно поэтому один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно.
Вопрос 15 из 25
Какой механизм отделяет верный разбор от похожего, но ошибочного объяснения «Совместимость версий»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
Тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум. Это правило даёт такой результат: один набор ожиданий можно применить к нескольким реализациям, передав фабрику объекта явно.
Матчер должен выражать наблюдаемое условие; проверка `change` различает отсутствие вызова, неверный объект и неверную величину изменения. Это правило даёт такой результат: проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу.
Тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум. Это правило даёт такой результат: два вызова нового Counter внутри примеров не разделяют состояние, поэтому каждый тест начинается с нуля.
Shared examples и shared context уменьшают повторение только когда описывают настоящий общий контракт, а не скрывают важные различия подготовки. Это правило даёт такой результат: проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу.
Тестовый набор зависит от версии Ruby, фреймворка и библиотек; предупреждения об устаревании нужно рассматривать как будущие отказы, а не шум. Это правило даёт такой результат: проверка параметров метода через `parameters` обнаруживает изменение сигнатуры без привязки к внутреннему телу.
Вопрос 17 из 25
Какое действие добавляет недостающую гарантию в блоке «Матчеры»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Ruby Ruby — Матчеры Копировать
# Выберите изменение, которое исправляет причину.
items = []
before = items.size
items << :new
after = items.size
p [before, after, after - before]
Обновлять инструмент тестирования отдельно, включать предупреждения и фиксировать минимальную/максимальную поддерживаемую версию Ruby в матрице. Это изменение устраняет проблему: проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его.
Создавать состояние на пример, а дорогие общие ресурсы очищать явным контрактом и проверять запуском в случайном порядке. Это изменение устраняет проблему: проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его.
Выбирать матчер по контракту: результат, изменение состояния, исключение или сообщение — и не смешивать их в неясную проверку. Это изменение устраняет проблему: проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его.
Выбирать матчер по контракту: результат, изменение состояния, исключение или сообщение — и не смешивать их в неясную проверку. Это изменение устраняет проблему: глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера.
Выбирать матчер по контракту: результат, изменение состояния, исключение или сообщение — и не смешивать их в неясную проверку. Это изменение устраняет проблему: stub любого экземпляра или цепочки методов позволяет невозможное взаимодействие и сохраняет зелёный тест после поломки настоящего интерфейса.
Вопрос 19 из 25
Что следует изменить в решении «Общие контексты», чтобы закрыть исходный риск? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Ruby Ruby — Общие контексты Копировать
# Выберите изменение, которое исправляет причину.
implementations = [
-> { [1, 2, 3] },
-> { (1..3).to_a }
]
implementations.each do |factory|
value = factory.call
p [value.first, value.size]
end
Оставлять общими только инварианты, а специфичную подготовку и имя сценария держать рядом с примером. Решение адресует следующий дефект: обновление RSpec/Minitest вместе со всем деревом gem смешивает изменение тестового интерфейса с изменением приложения.
Оставлять общими только инварианты, а специфичную подготовку и имя сценария держать рядом с примером. Решение адресует следующий дефект: глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера.
Оставлять общими только инварианты, а специфичную подготовку и имя сценария держать рядом с примером. Решение адресует следующий дефект: проверка только конечного значения может пройти, даже если действие сначала испортило состояние, а затем случайно восстановило его.
Внедрять узкую зависимость и использовать проверяющие doubles, согласованные с реальным интерфейсом. Решение адресует следующий дефект: глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера.
Создавать состояние на пример, а дорогие общие ресурсы очищать явным контрактом и проверять запуском в случайном порядке. Решение адресует следующий дефект: глубокая цепочка let/shared_context делает причину значения невидимой и заставляет читать несколько файлов ради одного примера.
Вопрос 22 из 25
Какой граничный сценарий лучше всего проверит решение по теме «Матчеры»? Верный вариант не содержит частично правильной подмены причины или следствия.
Добавить один контрактный или интеграционный тест с настоящим адаптером, чтобы подмена не расходилась с реализацией. Так проверяется решение: выбирать матчер по контракту: результат, изменение состояния, исключение или сообщение — и не смешивать их в неясную проверку.
Проверить, что наблюдаемое выражение действительно переоценивается после действия, а не вычислено заранее. Так проверяется решение: создавать состояние на пример, а дорогие общие ресурсы очищать явным контрактом и проверять запуском в случайном порядке.
Проверить, что наблюдаемое выражение действительно переоценивается после действия, а не вычислено заранее. Так проверяется решение: выбирать матчер по контракту: результат, изменение состояния, исключение или сообщение — и не смешивать их в неясную проверку.
Запустить один пример отдельно и весь файл с перемешиванием: результат должен совпасть. Так проверяется решение: выбирать матчер по контракту: результат, изменение состояния, исключение или сообщение — и не смешивать их в неясную проверку.
Проверить, что наблюдаемое выражение действительно переоценивается после действия, а не вычислено заранее. Так проверяется решение: обновлять инструмент тестирования отдельно, включать предупреждения и фиксировать минимальную/максимальную поддерживаемую версию Ruby в матрице.
Вопрос 23 из 25
Чем дополнить базовый тест, чтобы проверить ограничение темы «Подмены»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Запустить набор без случайно загруженных Rails helpers: скрытые расширения core-классов могут создавать ложную совместимость. Проверка относится к изменению: внедрять узкую зависимость и использовать проверяющие doubles, согласованные с реальным интерфейсом.
Добавить один контрактный или интеграционный тест с настоящим адаптером, чтобы подмена не расходилась с реализацией. Проверка относится к изменению: создавать состояние на пример, а дорогие общие ресурсы очищать явным контрактом и проверять запуском в случайном порядке.
Проверить, что наблюдаемое выражение действительно переоценивается после действия, а не вычислено заранее. Проверка относится к изменению: внедрять узкую зависимость и использовать проверяющие doubles, согласованные с реальным интерфейсом.
Добавить один контрактный или интеграционный тест с настоящим адаптером, чтобы подмена не расходилась с реализацией. Проверка относится к изменению: оставлять общими только инварианты, а специфичную подготовку и имя сценария держать рядом с примером.
Добавить один контрактный или интеграционный тест с настоящим адаптером, чтобы подмена не расходилась с реализацией. Проверка относится к изменению: внедрять узкую зависимость и использовать проверяющие doubles, согласованные с реальным интерфейсом.
Вопрос 24 из 25
Что следует добавить в набор проверок по теме «Общие контексты», чтобы поймать редкий отказ? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Проверить реализацию, которая удовлетворяет общему примеру, но нарушает важный дополнительный контракт — его нужен отдельный тест. Сценарий подтверждает надёжность решения: оставлять общими только инварианты, а специфичную подготовку и имя сценария держать рядом с примером.
Добавить один контрактный или интеграционный тест с настоящим адаптером, чтобы подмена не расходилась с реализацией. Сценарий подтверждает надёжность решения: оставлять общими только инварианты, а специфичную подготовку и имя сценария держать рядом с примером.
Проверить реализацию, которая удовлетворяет общему примеру, но нарушает важный дополнительный контракт — его нужен отдельный тест. Сценарий подтверждает надёжность решения: внедрять узкую зависимость и использовать проверяющие doubles, согласованные с реальным интерфейсом.
Запустить набор без случайно загруженных Rails helpers: скрытые расширения core-классов могут создавать ложную совместимость. Сценарий подтверждает надёжность решения: оставлять общими только инварианты, а специфичную подготовку и имя сценария держать рядом с примером.
Проверить реализацию, которая удовлетворяет общему примеру, но нарушает важный дополнительный контракт — его нужен отдельный тест. Сценарий подтверждает надёжность решения: создавать состояние на пример, а дорогие общие ресурсы очищать явным контрактом и проверять запуском в случайном порядке.
Вопрос 25 из 25
Какой случай покажет, что исправление «Совместимость версий» не держится на удачном входе? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Запустить набор без случайно загруженных Rails helpers: скрытые расширения core-классов могут создавать ложную совместимость. На этой границе проверяется мера: создавать состояние на пример, а дорогие общие ресурсы очищать явным контрактом и проверять запуском в случайном порядке.
Запустить набор без случайно загруженных Rails helpers: скрытые расширения core-классов могут создавать ложную совместимость. На этой границе проверяется мера: обновлять инструмент тестирования отдельно, включать предупреждения и фиксировать минимальную/максимальную поддерживаемую версию Ruby в матрице.
Добавить один контрактный или интеграционный тест с настоящим адаптером, чтобы подмена не расходилась с реализацией. На этой границе проверяется мера: обновлять инструмент тестирования отдельно, включать предупреждения и фиксировать минимальную/максимальную поддерживаемую версию Ruby в матрице.
Проверить реализацию, которая удовлетворяет общему примеру, но нарушает важный дополнительный контракт — его нужен отдельный тест. На этой границе проверяется мера: обновлять инструмент тестирования отдельно, включать предупреждения и фиксировать минимальную/максимальную поддерживаемую версию Ruby в матрице.
Запустить набор без случайно загруженных Rails helpers: скрытые расширения core-классов могут создавать ложную совместимость. На этой границе проверяется мера: выбирать матчер по контракту: результат, изменение состояния, исключение или сообщение — и не смешивать их в неясную проверку.