>

jest에서 mock 함수의 반환 값을 테스트하고 싶습니다.

다음 코드에서 fs 모듈의 mkdirSync 기능을 조롱하고 싶습니다

const fs = require("fs");

describe("Testing mock fs.mkdirSync", () => {
    fs.mkdirSync = jest.fn().mockReturnValue(5);
    fs.mkdirSync("./apple");
    it("fs.mkdirSync must have been called", () => {
        expect(fs.mkdirSync).toHaveBeenCalled();
    });
    //This test fails with TypeError: Cannot read property '0' of undefined
    it("fs.mkdirSync last return value must be 5", () => {
        expect(fs.mkdirSync.mock.results[0].value).toBe(5);
    });

});

TypeError로 두 번째 테스트 실패 : 정의되지 않은 '0'속성을 읽을 수 없음

  • 답변 # 1

    코드가 정확이지만 jest 설치가 오래된 버전입니다.

    테스트를 새로운 create-react-app 상용구에 복사하여 붙여넣고 jest를 실행하면 문제에 설명 된 동작이 발생합니다.

    npm install jest --save-dev 를 실행  최신 버전의 jest를 설치합니다.

    Jest를 실행하면 두 테스트가 모두 통과됩니다.

  • 답변 # 2

    Jest Mocked 함수의 반환 값을 테스트하려는 이유는 무엇입니까? 이 시점에서 jest 를 테스트하고 있습니다 .

    fs.mkdirSync 를 할당 할 수 있습니다  변수로 반환하고 그 값이 반환 된 값이므로 테스트합니다 :

    const result = fs.mkdirSync("./apple");
    it("fs.mkdirSync last return value must be 5", () => {
        expect(result).toBe(5);
    });
    
    

관련 자료

  • 이전 r - pgmm 명령을 실행하는 방법?
  • 다음 python - 파이썬 _ 세는 법