programing

jeast.fn()의 기능과 사용법은 무엇입니까?

newstyles 2023. 3. 15. 19:28

jeast.fn()의 기능과 사용법은 무엇입니까?

누가 설명 좀 해줄래?jest.fn()실제의 예를 들면, 어떻게 사용하는지, 어디에 사용하는지 혼란스럽기 때문에, 실제로 효과가 있습니다.

예를 들어 Utils Function(유틸리티 기능)을 사용하여 버튼을 클릭하기만 하면 국가 목록을 가져오는 구성 요소가 있는 경우

export default class Countries extends React.Component {
  constructor(props) {
    super(props)

    this.state = {
      countryList:''
    }
  }

  getList() {
    //e.preventDefault();
    //do an api call here
    let list = getCountryList();
    list.then((response)=>{ this.setState({ countryList:response }) });
  }

  render() {

    var cListing = "Click button to load Countries List";

    if(this.state.countryList) {
      let cList = JSON.parse(this.state.countryList);
      cListing = cList.RestResponse.result.map((item)=> { return(<li key={item.alpha3_code}> {item.name} </li>); });
    }

    return (
      <div>
        <button onClick={()=>this.getList()} className="buttonStyle"> Show Countries List </button>
        <ul>
          {cListing}
        </ul>
      </div>
    );

  }
}

Utils 함수 사용

const http = require('http');


    export function getCountryList() {
      return new Promise(resolve => {
        let url = "/country/get/all";
        http.get({host:'services.groupkt.com',path: url,withCredentials:false}, response => {
          let data = '';
          response.on('data', _data => data += _data);
          response.on('end', () => resolve(data));
        });
      });
    
    
    }

어디에 사용할 수 있습니까?jest.fn()또는 어떻게 테스트 할 수 있을까요?getList()버튼을 클릭하면 기능이 호출됩니까?

Jest 모의 함수

모의 함수는 출력을 테스트하는 것이 아니라 다른 코드에 의해 간접적으로 호출되는 함수의 동작을 감시할 수 있기 때문에 "스파이"라고도 합니다.다음을 사용하여 모의 함수를 만들 수 있습니다.jest.fn().

다음 문서를 확인합니다.jest.fn()

사용되지 않은 새 모의 함수를 반환합니다.필요에 따라 모의 구현을 수행합니다.

  const mockFn = jest.fn();
  mockFn();
  expect(mockFn).toHaveBeenCalled();

모의 구현의 경우:

  const returnsTrue = jest.fn(() => true);
  console.log(returnsTrue()) // true;

조롱할 수 있도록getList사용.jest.fn()다음과 같습니다.

jest.dontMock('./Countries.jsx');
const React = require('react/addons');
const TestUtils = React.addons.TestUtils;
const Countries = require('./Countries.jsx');

describe('Component', function() {
  it('must call getList on button click', function() {
    var renderedNode = TestUtils.renderIntoDocument(<Countries />);
    renderedNode.prototype.getList = jest.fn()

    var button = TestUtils.findRenderedDOMComponentWithTag(renderedNode, 'button');

    TestUtils.Simulate.click(button);

    expect(renderedNode.prototype.getList).toBeCalled();
  });
});

언급URL : https://stackoverflow.com/questions/40992628/what-does-jest-fn-do-and-how-can-i-use-it