知识卡片

依赖注入解耦测试

专业/工作 · 478.a

内容

如果一个处理器函数内部直接调用了访问全局数据库连接的函数,那么按[[单元测试的单元判定标准]],想测试这个处理器就必须真的连上数据库——这不是单元测试,而是集成测试。发散:依赖注入解决的不是”要不要用数据库”,而是”谁来决定用哪个数据库实现”——把这个决定权从被调用函数内部移到调用者手上,测试代码才有机会用假的实现替换真的实现,这是[[ActiveRecord模式与数据映射器模式]]里数据映。

参考来源

- 位置:《Go Web编程》第8章《应用测试》(源文件:_epub-src/OEBPS/text00019.html) - 结论依据:原文在该章节围绕“如果一个处理器函数内部直接调用了访问全局数据库连接的函数,那么按[[单元测试的单元判定标准]],想测试这个处理…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:,这些库在面向对象编程语言中一般称为对象-关系映射器(object-relational mapper,ORM)。诸如Java的Hibernate以及Ruby的ActiveRecord之类的ORM都会把关系数据库中的表映射为编程语言中的对象,但为表创建映射并不是面向对象编程语言的特权,很多其他编程语言也拥有类似的映射器,比如,Scala有…