我们应该编写最少数量的测试来满足我们的代码目标,然后只编写通过这些测试所必需的代码
这是正确的,但有一个重要的补充:您需要在 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信息。