美文网首页
使用@loopback/http-caching-proxy 对

使用@loopback/http-caching-proxy 对

作者: 闲杂人等 | 来源:发表于2019-08-04 12:16 被阅读0次

    这是一篇对官方文档的简单翻译
    Github地址

    是什么

    用于集成测试的HTTP 缓存代理
    不能用于生产环境!

    为什么要用?

    以下是项目版本库的readme的翻译
    为了测试去连接后端的REST/SOAP服务可能会有一定的困难:后端的服务也许会很慢,会有访问频度的限制等。这种情况下,集成测试会变得很慢,会导致测试现行或测试驱动的开发方式变得不现实。

    可以采用基于快照的mock server或使用一个缓存的HTTP client来解决,但这两种方式有严重的缺点:

    • 当使用snapshot-based mock server, 我们必须保证快照和实际的后端实现是同步的。

    • HTTP-client 缓存需要对代码进行大量的改动。

    基于文件系统的HTTP缓存代理可以提供一个干净利落的解决方案,这种方案结合了缓存和快照的优点:

    • 第一个请求会转发到真实的后端服务并将服务端返回的响应存储为快照
    • 接下来的请求会以缓存的快照来响应。
    • 当快照存储时长超过配置好的计时器时,缓存会被丢掉,然后以第一步的方式处理

    安装

    npm install --save-dev  @loopback/http-caching-proxy
    

    基本用法

    1. 引入

    import {HttpCachingProxy} from '@loopback/http-caching-proxy';
    

    2. 创建proxy实例

    (typically in Mocha's before hook):

    const proxy = new HttpCachingProxy({
      // directory where to store recorded snapshots - required
      cachePath: path.resolve(__dirname, '.proxy-cache'),
      // port where to listen - 0 by default
      port: 0,
      // how often to re-validate snapshots (in milliseconds) - one day by default
      ttl: 24 * 60 * 60 * 1000,
    });
    await proxy.start();
    

    3. 在测试代码中,配置http客户端的option属性,使用proxy

    Below is an example configuration for request:

    request = request.defaults({
      proxy: proxy.url,
      // Disable tunneling of HTTPS requests - this is required for HTTPS!
      tunnel: false,
    });
    

    4. 最后要停掉proxy

    (typically in Mocha's after hook):

    await proxy.stop();
    

    API Documentation

    See the auto-generated documentation at loopback.io

    Contributions

    Tests

    Run npm test from the root folder.

    Contributors

    See all contributors.

    License

    MIT

    相关文章

      网友评论

          本文标题:使用@loopback/http-caching-proxy 对

          本文链接:https://www.haomeiwen.com/subject/hgeilctx.html