可以模拟Google Drive API的服务或容器?

时间:2016-11-19 00:56:43

标签: unit-testing google-drive-api drive

由于种种原因,我写了很多最终与Google云端硬盘集成的应用。它是一个非常有用的基于云的存储实用程序,它可以在整个地方集成。

我的许多集成测试都需要调用实际的Google API。这样的浪费。

你可以使用Mockito来嘲笑它,但这需要大量的工作。并且它仅适用于已经剔除模拟的单元测试。

是否有人制作了可以模拟Google云端硬盘API的模拟HTTP网络服务?

我希望找到一个创建Docker容器的人,它可以启动一个模拟Google驱动器api,你可以将它指向Google-drive-sdk并让它在Linux文件系统后端工作。

S3有这个。示例:https://hub.docker.com/r/lphoward/fake-s3/

我很确定没有这样的docker容器。谷歌有没有什么东西?谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

对于python,如果您很勇敢,可以像vcrpy那样使用gcsfs。它通过HTTP将所有请求和响应记录到YAML文件中,然后可以使用复杂的匹配(例如,etag和时间戳不重要)和替换规则(以确保安全数据不会泄漏到该文件)进行测试版本控制)。

答案 1 :(得分:0)

这是我找到的:

对于JAVA:

请尝试检查HTTP Unit Testing。如文档中所述:

  

使用此HTTP框架编写单元测试时,不要向真实服务器发出请求。相反,模拟HTTP传输并注入虚假的HTTP请求和响应。 Google HTTP客户端库for Java的pluggable HTTP transport layer使其变得灵活且简单。

此外,com.google.api.client.testing.http包中提供了一些有用的测试工具(@Beta)。

适用于Android:

如果您使用的是Android Studio,则测试代码的位置取决于您所编写的测试类型。 Android Studio提供源代码目录(源集)。

  
      
  • 本地单元测试

         

    位于module-name/src/test/java/

         

    这些是在您的计算机的本地Java虚拟机(JVM)上运行的测试。当测试没有Android框架依赖项或者您可以模拟Android框架依赖项时,使用这些测试可以最大限度地缩短执行时间。

         

    在运行时,这些测试是针对android.jar的修改版本执行的,其中所有最终修饰符都已被删除。这使您可以使用流行的模拟库,例如Mockito

  •   

您可能需要查看此SO post并查看是否有帮助。

对于Python

您可以尝试Mocks

  

使用Mock对象是Python和其他面向对象语言的标准测试方法。该库定义了模拟API调用响应的Mock类。您可以使用它们来测试代码如何处理与Google API的基本交互。

您可以使用模拟单个HTTP请求响应的HttpMock class

希望有所帮助!