💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 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)
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Хороший набор примеров покрывает обычный путь, границу и отказ, а имя теста описывает наблюдаемое поведение; случайные значения без фиксированного seed затрудняют повторение ошибки.
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Каждый тест должен создавать и очищать собственное состояние, package.loaded и временные ресурсы; общий изменяемый модуль превращает независимые проверки в цепочку.
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: Совместимость версий проверяют матрицей интерпретаторов и явными условиями возможностей; тест, написанный под один диалект, не должен молча объявляться проверкой стандартного Lua.
Наблюдаемый результат в разделе «Набор примеров» опирается на правило: 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 должен сравнивать существенный результат и выдавать полезное различие; проверка лишь отсутствия ошибки часто пропускает неверные данные и побочные эффекты.
Регрессионный контракт раздела «Набор примеров» требует: Подмена нужна на контролируемой границе — времени, сети, файловой системе; глобальная замена функций оставляет состояние между тестами и делает порядок запуска значимым.
Регрессионный контракт раздела «Набор примеров» требует: Совместимость версий проверяют матрицей интерпретаторов и явными условиями возможностей; тест, написанный под один диалект, не должен молча объявляться проверкой стандартного Lua.
Регрессионный контракт раздела «Набор примеров» требует: Хороший набор примеров покрывает обычный путь, границу и отказ, а имя теста описывает наблюдаемое поведение; случайные значения без фиксированного seed затрудняют повторение ошибки.
Вопрос 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()
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Совместимость версий проверяют матрицей интерпретаторов и явными условиями возможностей; тест, написанный под один диалект, не должен молча объявляться проверкой стандартного Lua.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Хороший набор примеров покрывает обычный путь, границу и отказ, а имя теста описывает наблюдаемое поведение; случайные значения без фиксированного seed затрудняют повторение ошибки.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Каждый тест должен создавать и очищать собственное состояние, package.loaded и временные ресурсы; общий изменяемый модуль превращает независимые проверки в цепочку.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Assertion должен сравнивать существенный результат и выдавать полезное различие; проверка лишь отсутствия ошибки часто пропускает неверные данные и побочные эффекты.
Второй запуск раздела «Изоляция состояния» нужен, чтобы увидеть: Подмена нужна на контролируемой границе — времени, сети, файловой системе; глобальная замена функций оставляет состояние между тестами и делает порядок запуска значимым.