programing

다른 인수로 같은 함수를 두 번 조롱합니다.

powerit 2023. 3. 29. 21:58
반응형

다른 인수로 같은 함수를 두 번 조롱합니다.

JEST는 처음이고 현재 onComponentDidMount에서 API 호출을 하는 Javascript 컴포넌트를 테스트하고 있습니다.Ajax 콜(api 콜)의 반환 데이터에 따라 컴포넌트는 표 또는 단순한 텍스트를 표시합니다.

JEST 테스트는 매우 간단합니다.현재로서는, 현재의 스냅샷과 일치하는 테스트만을 실시합니다.따라서 API 호출은 서로 다른 데이터를 반환할 수 있으므로 스냅샷은 1) 표 포함 2) 단순 텍스트 포함 두 가지 측면이 있습니다.

나는 그렇게 서비스를 조롱하는 데 성공했다

jest.mock("/myService", () => ({
  index: (data, callback) => {
    const return = [
      {
        {...}
      },
    ]
    callback(return)
  },
}))

내 컴포넌트는myService.index()콜백에 사용하는 값이 다른 콜백에 대해 올바르게 콜백합니다.

이게 어떻게 생겼는지 보여줄게

it("has proper snapshot", () => {
    const props = {...}
    const component = shallow(<MyComponent {...props} />)
    expect(component).toMatchSnapshot()
  })

이것은 첫 번째 예로는 효과가 있지만, 나에게 맞는 정답을 찾을 수 없을 것 같습니다.도와주실 수 있나요? :)

1- 각 콜에 대해 다른 결과를 반환하는 모의:

mockReturnValueOnce 사용

myMock
  .mockReturnValueOnce(10)
  .mockReturnValueOnce('x')
  .mockReturnValue(true);

돌아온다10첫 번째 통화에서'x'두 번째 통화에서true그 후 언제든지.

2- 모크가 호출된 인수를 확인하는 경우:

사용: HaveBeenNthCalledWith

expect(mock).toHaveBeenNthCalledWith(1, '1st call args');
expect(mock).toHaveBeenNthCalledWith(2, '2nd call arg 1', '2nd call arg 2');

라고 단언할 것이다

  • mock로 호출되었다.'1st call args'처음에 ->라고 불렸을 때mock('1st call args')

  • mock로 호출되었다.'2nd call arg 1'그리고.'2nd call arg 2'두 번째로 ->라고 불렸을 때mock('2nd call arg 1', '2nd call arg 2')

3- 함수 매개변수에 따라 특정 응답을 원하는 경우

기본적으로는 joke에 의해 지원되지 않지만 joke를 볼 수 있습니다.이 경우 다음과 같은 작업을 수행할 수 있습니다.

when(fn).calledWith(1).mockReturnValue('yay!')

에 대한 Jest 문서를 확인하십시오.함수를 조롱할 때 다른 값을 반환하고 한 번 원하는 값을 반환한 다음 나중에 다른 값을 반환할 수 있습니다.

언급URL : https://stackoverflow.com/questions/53887173/jest-mock-the-same-function-twice-with-different-arguments

반응형