你们认为使用模拟对象比不使用模拟对象更好吗?模拟对象仅用于单元测试还是可以直接在原始项目中用作真实对象并在之后切换?
我一直在这里读书,最吸引我的是模拟的层隔离。
你们认为使用模拟对象比不使用模拟对象更好吗?模拟对象仅用于单元测试还是可以直接在原始项目中用作真实对象并在之后切换?
我一直在这里读书,最吸引我的是模拟的层隔离。
归根结底,可以认为它是“另一种实现方式”。在缺乏mocking的情况下,软件已经被编写了数十年,并且仍在继续编写。
这主要是单元测试的一个设施。
Mocking/stubs真正优秀的地方在于测试驱动开发。在没有mocking/stubbing的情况下,应用程序中依赖关系的网状结构通常是这样的:在编写测试之前,您必须几乎构建整个应用程序,即使这样,您也正在测试更大的功能部分,因此隔离错误变得更加困难。
考虑以下内容:
ClassA
并编写测试以验证其行为。ClassA
需要从 RepositoryM
获取数据。RepositoryM
以便测试 ClassA
。RepositoryM
编写测试。RepositoryM
实际上需要 ServiceX
来填充其数据。ServiceX
,以便我可以测试和实现 RepositoryM
,然后可以测试和实现ClassA
...如此往复。
使用mocks允许您在不实现任何内容之前开始编写测试。您所需要的只是接口。
使用mocking框架可以大大加快测试构建速度。
Mocking/stubbing有辅助好处--其中一个好处是强制编程到抽象而不是实现。