мы должны написать минимальное количество тестов, чтобы не достичь цели нашего кода, а затем написать только код, необходимый для прохождения таких тестов
Это правильно, но с одним важным дополнением: вам нужносделайте это на каждой итерации TDD.Таким образом, конечный результат (после многих итераций) не обязательно должен быть маленьким и простым.Вы создаете большие вещи с небольшими шагами.
В случае, если вы описываете суть вашей функции, это вызывать внешний API с правильными параметрами в зависимости от входных параметров.Если вы создадите его с использованием TDD, тест будет состоять в том, чтобы предоставить некоторые параметры для вашей функции и проверить, что был вызван внешний API.
Вы начнете создавать свою функцию с чего-то простого, а затем усложните его.Представим, что вы звоните по внешнему API, который обрабатывает платежи в вашем онлайн-хранилище.
Вы можете начать с чего-то вроде:
def test_payment():
order_processor.external_api = Mock()
order = Order(items=Item(quantity=10, price=10))
order_processor.process(order)
assert_that(order_processor.external_api.process_payment, called_with(amount=100))
Затем вы реализуете OrderProcessor.process
, передавая только amount
в `process_payment.
Следующая итерация TDD будетдобавьте информацию о покупателе:
def test_payment():
order_processor.external_api = Mock()
order = Order(
items=Item(quantity=10, price=10),
buyer=Buyer(id=567)
)
order_processor.process(order)
assert_that(
order_processor.external_api.process_payment,
called_with(amount=100, payer=buyer.id))
Затем измените process
для передачи buyer
информации.