Polly.JS는 HTTP 상호 작용을 기록, 재생 및 스터 빙 할 수 있는 독립형 프레임워크에 독립적 인 JavaScript 라이브러리입니다. Polly.JS는 노드와 브라우저 모두에서 여러 요청 API를 활용하여 구성이 거의 없거나 전혀 없는 요청과 응답을 조롱 할 수 있으며 단순하고 강력하며 직관적 인 API로 각 요청을 완벽하게 제어 할 수 있습니다.
https://github.com/Netflix/pollyjs
왜 폴리인가?
비품과 공장을 API와 동등하게 유지하는 데 시간이 오래 걸릴 수 있습니다. 폴리는 앞서의 유연성 없이 실제 서버 응답을 기록하고 유지함으로써 이를 완화합니다.
특성
시작하기
시작하려면 빠른 시작 설명서를 확인하십시오.
용법
Polly를 사용하여 테스트 사례의 예를 살펴 보겠습니다.
import { Polly } from '@pollyjs/core'; import XHRAdapter from '@pollyjs/adapter-xhr'; import FetchAdapter from '@pollyjs/adapter-fetch'; import RESTPersister from '@pollyjs/persister-rest'; /* Register the adapters and persisters we want to use. This way all future polly instances can access them by name. */ Polly.register(XHRAdapter); Polly.register(FetchAdapter); Polly.register(RESTPersister); describe('Netflix Homepage', function() { it('should be able to sign in', async function() { /* Create a new polly instance. Connect Polly to both fetch and XHR browser APIs. By default, it will record any requests that it hasn't yet seen while replaying ones it has already recorded. */ const polly = new Polly('Sign In', { adapters: ['xhr', 'fetch'], persister: 'rest' }); const { server } = polly; /* Intercept all Google Analytic requests and respond with a 200 */ server .get('/google-analytics/*path') .intercept((req, res) => res.sendStatus(200)); /* Pass-through all GET requests to /coverage */ server.get('/coverage').passthrough(); /* start: pseudo test code */ await visit('/login'); await fillIn('email', 'polly@netflix.com'); await fillIn('password', '@pollyjs'); await submit(); /* end: pseudo test code */ expect(location.pathname).to.equal('/browse'); /* Calling `stop` will persist requests as well as disconnect from any connected browser APIs (e.g. fetch or XHR). */ await polly.stop(); }); });
위의 테스트 케이스는 테스트가 다시 실행될 때 Polly가 로그인 응답을 재생하는 데 사용할 다음 HAR 파일을 생성합니다.
{ "log": { "_recordingName": "Sign In", "browser": { "name": "Chrome", "version": "67.0" }, "creator": { "name": "Polly.JS", "version": "0.5.0", "comment": "persister:rest" }, "entries": [ { "_id": "06f06e6d125cbb80896c41786f9a696a", "_order": 0, "cache": {}, "request": { "bodySize": 51, "cookies": [], "headers": [ { "name": "content-type", "value": "application/json; charset=utf-8" } ], "headersSize": 97, "httpVersion": "HTTP/1.1", "method": "POST", "postData": { "mimeType": "application/json; charset=utf-8", "text": "{\"email\":\"polly@netflix.com\",\"password\":\"@pollyjs\"}" }, "queryString": [], "url": "https://netflix.com/api/v1/login" }, "response": { "bodySize": 0, "content": { "mimeType": "text/plain; charset=utf-8", "size": 0 }, "cookies": [], "headers": [], "headersSize": 0, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, "startedDateTime": "2018-06-29T17:31:55.348Z", "time": 11, "timings": { "blocked": -1, "connect": -1, "dns": -1, "receive": 0, "send": 0, "ssl": -1, "wait": 11 } } ], "pages": [], "version": "1.2" } }
등록된 댓글이 없습니다.