💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 25
На каком правиле держится поведение этого кода? Ответ должен описывать основной механизм раздела «Набор примеров».
Lua Lua · Набор примеров · разбор 1 Копировать
describe("cart total", function()
it("adds two priced items", function()
local cart=Cart.new()
cart:add({price=12}); cart:add({price=8})
assert.are.equal(20, cart:total())
end)
end)
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Совместимость версий проверяют матрицей интерпретаторов и явными условиями возможностей; тест, написанный под один диалект, не должен молча объявляться проверкой стандартного Lua.
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Каждый тест должен создавать и очищать собственное состояние, package.loaded и временные ресурсы; общий изменяемый модуль превращает независимые проверки в цепочку.
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Хороший набор примеров покрывает обычный путь, границу и отказ, а имя теста описывает наблюдаемое поведение; случайные значения без фиксированного seed затрудняют повторение ошибки.
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Assertion должен сравнивать существенный результат и выдавать полезное различие; проверка лишь отсутствия ошибки часто пропускает неверные данные и побочные эффекты.
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Подмена нужна на контролируемой границе — времени, сети, файловой системе; глобальная замена функций оставляет состояние между тестами и делает порядок запуска значимым.
Вопрос 3 из 25
Какая гарантия важнее сохранения точной формы кода? Речь идёт о центральном правиле раздела «Набор примеров».
Lua Lua · Набор примеров · разбор 3 Копировать
do
describe("cart total", function()
it("adds two priced items", function()
local cart=Cart.new()
cart:add({price=12}); cart:add({price=8})
assert.are.equal(20, cart:total())
end)
end)
end
Регрессионный контракт раздела «Набор примеров» требует: Каждый тест должен создавать и очищать собственное состояние, package.loaded и временные ресурсы; общий изменяемый модуль превращает независимые проверки в цепочку.
Регрессионный контракт раздела «Набор примеров» требует: Подмена нужна на контролируемой границе — времени, сети, файловой системе; глобальная замена функций оставляет состояние между тестами и делает порядок запуска значимым.
Регрессионный контракт раздела «Набор примеров» требует: Assertion должен сравнивать существенный результат и выдавать полезное различие; проверка лишь отсутствия ошибки часто пропускает неверные данные и побочные эффекты.
Регрессионный контракт раздела «Набор примеров» требует: Хороший набор примеров покрывает обычный путь, границу и отказ, а имя теста описывает наблюдаемое поведение; случайные значения без фиксированного seed затрудняют повторение ошибки.
Регрессионный контракт раздела «Набор примеров» требует: Совместимость версий проверяют матрицей интерпретаторов и явными условиями возможностей; тест, написанный под один диалект, не должен молча объявляться проверкой стандартного Lua.
Вопрос 17 из 25
Что здесь важнее проверить, чем само отсутствие ошибки? Выберите именно проверяемую границу раздела «Изоляция состояния».
Lua Lua · Изоляция состояния · разбор 2 Копировать
local function reproduce_case()
before_each(function()
package.loaded.app_state=nil
state=require("app_state")
end)
after_each(function() state:close() end)
end
reproduce_case()
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Хороший набор примеров покрывает обычный путь, границу и отказ, а имя теста описывает наблюдаемое поведение; случайные значения без фиксированного seed затрудняют повторение ошибки.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Совместимость версий проверяют матрицей интерпретаторов и явными условиями возможностей; тест, написанный под один диалект, не должен молча объявляться проверкой стандартного Lua.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Подмена нужна на контролируемой границе — времени, сети, файловой системе; глобальная замена функций оставляет состояние между тестами и делает порядок запуска значимым.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Assertion должен сравнивать существенный результат и выдавать полезное различие; проверка лишь отсутствия ошибки часто пропускает неверные данные и побочные эффекты.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Каждый тест должен создавать и очищать собственное состояние, package.loaded и временные ресурсы; общий изменяемый модуль превращает независимые проверки в цепочку.