justintime50/vcr-accessories 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

justintime50/vcr-accessories

最新稳定版本:v0.4.0

Composer 安装命令:

composer require justintime50/vcr-accessories

包简介

Various accessories for your PHP VCR

README 文档

README

Build Status Coverage Status Version Licence

Various tools and accessories for your PHP VCR.

When working with VCR solutions, I'm often finding I need a few extra "accessories" to get them working the way I want. This package includes the following:

  • Cassette scrubbing (eg: sensitive data)
  • Expire and warn or error on stale cassettes
  • Setup a cassette directory
  • Setup and teardown VCR tests

Install

# Install in your project
composer require --dev justintime50/vcr-accessories

# Install locally
composer install

Usage

bootstrap.php

use allejo\VCR\VCRCleaner;
use VCR\VCR;
use VCRAccessories\CassetteScrubber;
use VCRAccessories\CassetteSetup;

const CASSETTE_DIR = 'tests/cassettes';
CassetteSetup::setupCassetteDirectory(CASSETTE_DIR);

VCR::configure()->setCassettePath(CASSETTE_DIR)
    ->setStorage('yaml')
    ->setMode('once')
    ->setWhiteList(['vendor/guzzle']);

const REDACTED_STRING = '<REDACTED>';

// SCRUBBERS must be a multidimensional array where the first index of each nested array is the key
// you want to scrub and the second index is what you want it to be replaced with before persisting to disk
define('SCRUBBERS', [
    ['origin', REDACTED_STRING],
]);

VCRCleaner::enable([
    'response' => [
        'bodyScrubbers' => [
            function ($responseBody) {
                $responseBodyJson = json_decode($responseBody, true);
                $responseBodyEncoded = CassetteScrubber::scrubCassette(SCRUBBERS, $responseBodyJson);

                // Re-encode the data so we can properly store it in the cassette
                return json_encode($responseBodyEncoded);
            }
        ],
    ],
]);

Test File

use VCRAccessories\CassetteSetup;

public static function setUpBeforeClass(): void
{
    CassetteSetup::setupVcrTests();
}

public static function tearDownAfterClass(): void
{
    CassetteSetup::teardownVcrTests();
}

public function myTest()
{
    CassetteSetup::setupCassette(
        cassetteName: 'nameOfCassette.yaml', 
        expirationDays: 180, 
        expirationError: true
    );

    // Your test here
}

Development

# Install dependencies
composer install

# Lint
composer lint
composer fix
composer phpstan

# Test
composer test
composer coverage

统计信息

  • 总下载量: 1.81k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-03-29

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固