NodeJ의 단위 테스트를위한 외부 API 모의

user3836726

이제 nodejs에서 외부 API를 조롱하기 위해 라이브러리를 검색하는 데 몇 시간을 소비합니다. 이미 SinonJS 라이브러리를 사용해 보았지만 외부 웹 호출에는 작동하지 않는 것 같습니다. 외부 웹 호출을 조롱 할 수있는 다른 라이브러리를 아는 사람이 있습니까? 아니면 누군가 SinonJS에 대한 작업 예제가 있습니까?

모든 답변에 감사드립니다!

아래에서 내 코드를 찾을 수 있습니다.

SinonJS를 사용한 내 단위 테스트 :

import expect from 'expect';
import { searchForProducts } from 'api/ProductAPI';
import emptyResults from 'api/ProductAPI_EmptyResult.json';

describe('ProductAPI', () => {
  let server;

  before(function () {
    server = sinon.fakeServer.create();
    server.respondWith(
      "GET",
      "https://my.domain.com/myresource",
      [200, { "Content-Type": "application/json" }, JSON.stringify(emptyResults)]
    );
  });

  it('product search with working API ', () => {

    server.respond();

    searchForProducts('tv').then(
      (data) => {
        console.log('success');
      },
      (error) => {
        console.log('error');
      });

    //dummy expect
    expect(
      'test'
    ).toEqual('test');

  });
});

ProductAPI :

import restClient from './RestClient';

/**
 *
 * Returns a list of products 
 * @param query
 * @returns {ProductDTOs}
 */
function _searchForProducts(query) {
  return restClient().get(
    `/myresource`
  );
}

RestClient (Axios 포함) :

import Axios from 'axios';

const restClient = function restClient() {
  let axios;
  let apiUrl;

  function _url(url) {
    return `${apiUrl}${url}`;
  }

  function _get(url) {
    return axios({
      method: 'GET',
      url: _url(url),
    });
  }

  function _post(url, data) {
    return axios({
      method: 'POST',
      url: _url(url), data,
    });
  }

  function _put(url, data) {
    return axios({
      method: 'PUT',
      url: _url(url), data,
    });
  }

  function _patch(url, data) {
    return axios({
      method: 'PATCH',
      url: _url(url),
      data,
    });
  }

  function _delete(url, data) {
    return axios({
      method: 'DELETE',
      url: _url(url), data,
    });
  }

  function _setDefaultHeaders() {
    axios.defaults.headers.post['Content-Type'] = 'application/json';
    axios.defaults.headers.common['Accept'] = 'application/json';
  }

  function _setAuthorizationHeader(token) {
    axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
  }

  function _removeAuthorizationHeader() {
    axios.defaults.headers.common['Authorization'] = '';
  }

  function _setup() {
    axios = Axios;
    apiUrl = 'https://my.domain.com';

    _setDefaultHeaders();
  }

  _setup();

  return {
    setup: _setup,
    url: _url,
    get: _get,
    post: _post,
    put: _put,
    patch: _patch,
    delete: _delete,
    setDefaultHeaders: _setDefaultHeaders,
    setAuthorizationHeader: _setAuthorizationHeader,
    removeAuthorizationHeader: _removeAuthorizationHeader,
  };
};

export default restClient;
user3836726

내 문제를 발견했습니다. 일부 서버 구성을 잊어 버렸습니다. 서버를 실행하려면 autoRespond 속성을 true로 설정해야했습니다.

  before(function () {
    server = sinon.fakeServer.create();
    server.respondWith(
      "GET",
      "https://ec2-52-58-48-214.eu-central-1.compute.amazonaws.com/mspocc/v2/msp/products/search?query=tv&fields=FULL",
      [200, { "Content-Type": "application/json" }, JSON.stringify(emptyResults)]
    );
    server.autoRespond = true
  });

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

모의를 사용한 Python 단위 테스트 및 외부 모듈 패치

분류에서Dev

단위 테스트를위한 Python의 Mock Streaming API

분류에서Dev

API 테스트를위한 모의 데이터베이스

분류에서Dev

자신의 모듈에있는 모든 모듈에 대한 스프링 부팅 단위 테스트를 실행

분류에서Dev

Blazor 구성 요소 단위 테스트를위한 IJSRuntime 모의

분류에서Dev

단위 테스트를위한 모의 CKContainer

분류에서Dev

Python 3 모듈의 외부 함수를 제외하고 try에 대한 단위 테스트를 작성하는 방법

분류에서Dev

C # 웹 API의 moq 단위 테스트

분류에서Dev

단위 테스트를위한 AngularJS 재정의 (모의) 서비스

분류에서Dev

스파크 작업의 단위 테스트를위한 HTable 데이터 모의

분류에서Dev

웹 API 통합 테스트를위한 비즈니스 계층 모의

분류에서Dev

C # 단위 테스트에서 예외를 throw하지 않는 모의 함수

분류에서Dev

Android 단위 테스트-모의 내부 클래스 메서드

분류에서Dev

(실제) 단위 테스트를위한 Laravel 5.1의 모의 요청

분류에서Dev

부모 요소 외부의 CSS 위치

분류에서Dev

단위 테스트를위한 노드 모듈의 경로 매핑

분류에서Dev

Flutter의 공급자를위한 단위 테스트

분류에서Dev

SailsJS 앱의 단위 테스트를위한 전역 변수

분류에서Dev

작업 단위에 연결된 리포지토리를 ASP.NET Web API의 단위 테스트를 위해 모의 처리해야합니까?

분류에서Dev

라우팅 단위 테스트를위한 mvc의 테스트 방법 오류

분류에서Dev

단위 테스트를 위해 C #에서 StreamReader 모의

분류에서Dev

단위 테스트에서 가짜 TreeNode의 부모 접근자를 어떻게 모의 할 수 있습니까?

분류에서Dev

다중 모듈 스프링 부트 프로젝트의 단위 테스트

분류에서Dev

단위 테스트 모의 GCS

분류에서Dev

Mongoose 컨트롤러를 테스트하기 위해 Jasmine 및 NodeJ를 사용하여 콜백 함수 내부의 로직을 테스트하는 방법

분류에서Dev

Perl 스크립트 / 모듈 예외 및 죽는 테스트를위한 단위 테스트

분류에서Dev

2 단계 중첩 하위 쿼리 내부의 외부 테이블 액세스

분류에서Dev

Angular에서 단위 테스트에 대한 부모 클래스 메서드를 모의하는 방법은 무엇입니까?

분류에서Dev

C를 사용한 Cmocka 단위 테스트 : 중첩 함수 호출 모의

Related 관련 기사

  1. 1

    모의를 사용한 Python 단위 테스트 및 외부 모듈 패치

  2. 2

    단위 테스트를위한 Python의 Mock Streaming API

  3. 3

    API 테스트를위한 모의 데이터베이스

  4. 4

    자신의 모듈에있는 모든 모듈에 대한 스프링 부팅 단위 테스트를 실행

  5. 5

    Blazor 구성 요소 단위 테스트를위한 IJSRuntime 모의

  6. 6

    단위 테스트를위한 모의 CKContainer

  7. 7

    Python 3 모듈의 외부 함수를 제외하고 try에 대한 단위 테스트를 작성하는 방법

  8. 8

    C # 웹 API의 moq 단위 테스트

  9. 9

    단위 테스트를위한 AngularJS 재정의 (모의) 서비스

  10. 10

    스파크 작업의 단위 테스트를위한 HTable 데이터 모의

  11. 11

    웹 API 통합 테스트를위한 비즈니스 계층 모의

  12. 12

    C # 단위 테스트에서 예외를 throw하지 않는 모의 함수

  13. 13

    Android 단위 테스트-모의 내부 클래스 메서드

  14. 14

    (실제) 단위 테스트를위한 Laravel 5.1의 모의 요청

  15. 15

    부모 요소 외부의 CSS 위치

  16. 16

    단위 테스트를위한 노드 모듈의 경로 매핑

  17. 17

    Flutter의 공급자를위한 단위 테스트

  18. 18

    SailsJS 앱의 단위 테스트를위한 전역 변수

  19. 19

    작업 단위에 연결된 리포지토리를 ASP.NET Web API의 단위 테스트를 위해 모의 처리해야합니까?

  20. 20

    라우팅 단위 테스트를위한 mvc의 테스트 방법 오류

  21. 21

    단위 테스트를 위해 C #에서 StreamReader 모의

  22. 22

    단위 테스트에서 가짜 TreeNode의 부모 접근자를 어떻게 모의 할 수 있습니까?

  23. 23

    다중 모듈 스프링 부트 프로젝트의 단위 테스트

  24. 24

    단위 테스트 모의 GCS

  25. 25

    Mongoose 컨트롤러를 테스트하기 위해 Jasmine 및 NodeJ를 사용하여 콜백 함수 내부의 로직을 테스트하는 방법

  26. 26

    Perl 스크립트 / 모듈 예외 및 죽는 테스트를위한 단위 테스트

  27. 27

    2 단계 중첩 하위 쿼리 내부의 외부 테이블 액세스

  28. 28

    Angular에서 단위 테스트에 대한 부모 클래스 메서드를 모의하는 방법은 무엇입니까?

  29. 29

    C를 사용한 Cmocka 단위 테스트 : 중첩 함수 호출 모의

뜨겁다태그

보관