测试 – 使用外部服务/ api的代码的TDD BDD的最佳实践

我正在使用一个Twitter宝石,基本上访问Twitter,让我抓住推文,时间线等.它真的很好,但我有很多我的代码使用它返回的东西,我需要测试它.宝石返回的东西不是简单的字符串,有非常复杂的对象(也很可怕),所以我留下了挠头.

所以基本上我正在寻找一个答案,书籍,博客,开源项目,它可以向我展示围绕外部服务进行测试的权利和错误.

最重要的是,不是以语言为中心或以ruby / rails为中心的答案.

解决方法

你真正在谈论的是你想要完成的两种不同的测试 – 单元测试和集成测试.

单元测试将独立于任何外部数据测试方法的有效性.您应该根据您使用的任何语言来研究某种模拟框架.你基本上想要用测试来说,相当于“如果这些假设是合格的,那么这个测试应该产生……”制作框架将定义你的假设,就是说某些类/对象设置在一种特殊的方式,可以假设是有效的.这些测试不依赖于Twitter活着,或者第三方库/ API响应.

集成测试将针对数据源执行实时测试,使用库/ API执行实际操作.如果它变得棘手,因为您正在使用第三方服务,所以正在写入服务(即,如果您正在创建新的推文).如果你是,你总是可以在Twitter上创建一个可以仅用于写操作的帐户.通常,如果您正在测试本地数据库(例如),那么您可以使用事务来测试类似的操作;回滚事务而不是提交它们.

以下是一些非语言特定的高级定义:

> Wikipedia (Software Testing)
> Wikipedia (Mock Object)

我来自.NET堆栈,因此我不会假装对Ruby有太多了解.不过,快速谷歌搜索确实揭示了以下内容:

> Mocha (Ruby Mocking Framework)

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...