我有使用Rspec的Ruby和TDD的经验,主要用于后端单元测试。
我最近开始学习测试背后的理论,包括一些新概念; Drivers
和Stubs
。
这些术语的定义似乎在网上有所不同,只是比他们的帮助更让人困惑。
据我所知,存根在Rspec中是双打的? 不知道在哪里放置司机?
任何人都可以对此有所了解吗?
答案 0 :(得分:4)
简而言之,存根是测试调用的代码的双倍测试,并期望从中获得一些返回值。创建一个驱动程序以模拟调用者的测试代码。
例如,如果要测试用户身份验证登录组件。您可以创建一个具有最小到无逻辑的存根来伪造“经过身份验证”或“未经过身份验证”的响应,而不是使用外部LDAP服务器测试该组件。然后,您可以创建一个驱动程序来伪造调用者(HTML页面,控制器等),将请求发送到身份验证组件。
Robert (Uncle Bob) Martin和Gerard Meszaros进一步解释了不同类型的测试加倍:
true
,则存根将返回true
。+
运算符。如果没有这样的电话,间谍将无法通过测试。有一点需要注意的是,您的测试加倍的行为越多,偏离实际系统的实际行为的可能性就越大。就个人而言,我尽量避免测试双打。如果我真的必须创建它们,我从最简单的形式开始,让我的测试通过。
最后,术语令人困惑,而且经常使用不当。就个人而言,我不会过于沉溺于它,只是使用在给定情况下对我有用的最简单的解决方案。