programing

joke.fn() 메서드와 joke.spyOn() 메서드의 차이점은 무엇입니까?

sourcejob 2023. 3. 20. 23:10
반응형

joke.fn() 메서드와 joke.spyOn() 메서드의 차이점은 무엇입니까?

저는 리액션 프로젝트를 위해 유닛 테스트 케이스를 작성하고 테스트 케이스를 작성하기 위해 농담과 효소를 사용하고 있습니다.나는 농담 문서를 읽었다.

https://jestjs.io/docs/en/jest-object.html#jestspyonobject-methodname

에 대해 설명하겠습니다.jest.spyOn()그 방법을 완전히 이해하지 못했습니다.

그래서 나는 우리가 사용해야 할 구체적인 장소에 대해 더 자세히 알고 싶다.jest.fn()또, 사용처/사용처jest.spyOn()두 방법 모두 예를 들어 설명해주면 감사하겠습니다.

감사해요.

리액트/프런트엔드 프로젝트에서 이 두 가지 기능을 간단히 이해하면 다음과 같습니다.

jest.fn()

  • 함수를 조롱하고 해당 함수의 원래 구현에 대해 정말로 신경쓰지 않습니다(에 의해 재정의됨).jest.fn())
  • 수익률을 조롱하는 경우가 많습니다.
  • 이는 테스트에서 백엔드 API를 호출할 때 등 백엔드 또는 서드파티 라이브러리에 대한 의존성을 제거하고 싶을 때 매우 유용합니다.
  • 또한 실제 단위 테스트를 수행하려는 경우에도 매우 유용합니다.테스트하는 유닛에 의해 호출된 특정 함수가 정상적으로 동작하고 있는지 여부에 대해서는 신경 쓰지 않습니다.이것은, 이 함수의 책임의 일부가 아니기 때문입니다.

jest.spyOn()

  • 이 기능의 원래 구현은 테스트와 관련이 있지만 다음과 같습니다.
    • 특정 시나리오 전용으로 독자적인 실장을 추가해, 다음의 방법으로 리셋 할 수 있습니다.mockRestore()(단순히 사용하시는 경우)jest.spyOn()더 이상 비웃지 않고 기본적으로 원래 기능을 호출합니다.)
    • 함수가 호출되었는지 확인하려고 합니다.
    • ...
  • 이것은 특히 통합 테스트에 도움이 된다고 생각합니다만, 그 뿐만이 아닙니다.

(좋은 블로그 투고:https://medium.com/@rickhanlonii/understanding-mocks-f0046c68e53c)

가 알기로는 유일한 차이점은 다음과 같이 원래 기능을 복원할 수 있다는 입니다.jest.spyOn그리고 넌 할 수 없다jest.fn.

컴포넌트가 렌더링되었을 때 함수를 호출하는 후크가 있다고 가정합니다.여기에서는 함수가 호출된 것을 확인할 수 있습니다.이 함수는 테스트하지 않습니다.

원기능이 어떻게 동작하는지를 테스트하고 싶은 경우는, 또 다른 케이스입니다.그리고 둘 다 하나의 테스트 파일에 필요합니다.

실제 방법:

myMethod() {
  return 33;
}

★★★★★★★★★★★★★★★★ jest.fn()

const myMethod = jest.fn().mockImplementation(() => 25);
const result = myMethod();
expect(result).toBe(25);

지금 실제 myMethod를 테스트하는 경우 joke.fn()을 사용하여 정상으로 되돌릴 수 없습니다.

스파이의 또 다른 점:

const spy_myMethod = jest.spyOn(component, "myMethod").mockImplementation(() => 25);
const result = myMethod();
expect(result).toBe(25);

그리고 만약 우리가 원래의 myMethod를 원한다면

spy_myMethod.mockRestore();
const result = myMethod();
expect(result).toBe(33);

jest.fn()stub을 작성하는 방식입니다.콜 추적, 반환값 정의 등을 할 수 있습니다.

jest.spyOn()jasmine에서 온 것으로 오브젝트상의 기존 메서드를 스파이로 변환할 수 있습니다.이것에 의해, 콜을 추적해 원래의 메서드 실장을 재실행할 수도 있습니다.

에 대한 의 실장을 는, 「」를 사용하는 것입니다.spyOn를 들면 '모크를 만들 는 '모크'를 사용합니다.fn().

언급URL : https://stackoverflow.com/questions/57643808/what-is-the-difference-between-jest-fn-and-jest-spyon-methods-in-jest

반응형