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
'programing' 카테고리의 다른 글
| WordPress에서 jQuery로 아코디언을 작성하려면 어떻게 해야 합니까? (0) | 2023.03.20 |
|---|---|
| Observable/http/async 콜로부터의 응답을 angular로 반환하려면 어떻게 해야 합니까? (0) | 2023.03.20 |
| JSON 스키마: "all of"과 "additionalProperties" (0) | 2023.03.20 |
| 탭 대신 공간을 사용하도록 Eclipse를 변경하려면 어떻게 해야 합니까? (0) | 2023.03.20 |
| Oracle 서비스 이름 검색 방법 (0) | 2023.03.20 |