测试驱动编码:从思考到实践
测试的核心并非找错
在如今这个时代,开发者们大多已意识到编写测试的重要性,但对于测试的真正意义,仍存在误解。很多开发者认为编写测试是为了确保代码能正常运行,然而这种观点并不准确。实际上,测试的主要益处并非在运行测试时体现,而是在思考和编写测试的过程中。
思考测试的价值
假设周一早上,你要编写一段代码,用于从数据库中查询每周观看超过 10 个视频的用户列表。你打开编辑器,开始编写查询函数:
def return_avid_viewers do # ... hmmm ... end此时,你并不能确定这样做是否正确。但通过思考测试,情况会有所不同。
首先,想象函数编写完成后如何进行测试。你需要使用测试数据,这意味着最好在自己能控制的数据库中操作。为了便于测试,应将数据库实例作为参数传入函数,而非使用全局数据库:
def return_avid_users(db) do接着,考虑如何填充测试数据。需求是查询每周观看超过 10 个视频的用户,查看数据库表,发现“opened_video”和“completed_video”两个字段可能有用。但不确定需求具体指哪个字段,而业务联系人又不在,此时可以将字段名作为参数传入:
def return_avid_users(db, qualifying_field_name)