무의미한 테스트 값 사용 중지!

모의 데이터가 무의미한"test" 문자열과 123 정수 값으로 구성된 테스트를 본 적이 있습니까? 네, 저도요. 짜증나죠.

무의미한 테스트 값 😿



이 JavaScript 테스트를 고려하십시오.

test('should return children of parent', () => {

  // mock some data
  const mockedParent = {
    name: "test",
    age: 123,
    interests: [
      "test",
      "test",
    ],
  };
  const mockedChildren = [
    {
      name: "test",
      parentName: "test",
    },
    {
      name: "test",
      parentName: "test",
    },
  ];

  // run the code
  const actual = getChildrenForParent(mockedParent, mockedChildren);
  const expected = [
    {
      name: "test",
    },
    {
      name: "test",
    },
  ];

  // assert the results
  expect(actual).toBe(expected);
});


이것은 1) 설정 2) 실행 및 3) 어설션으로 구성된 표준 단위 테스트입니다. 잘생겼는데 왜 못생겼다고함?

코드베이스에서 이 테스트를 찾았다면 어떤 데이터가 테스트 통과와 관련이 있는지 이해하지 못할 것입니다. 부모의 이름을 "test"에서 "some-name"로 변경해도 테스트가 계속 통과됩니까? 모르겠어요. 테스트 이름이 도움이 될 수 있지만 다른 문서와 마찬가지로 결국 변경되어 코드와 동기화되지 않습니다.

의미 있는 테스트 값 😻



의미 있는 테스트 데이터를 사용한다면 테스트 결과는 어떻게 될까요?

test('should return children of parent', () => {

  // mock some data
  const irrelevantAge = 123;
  const mockedParent = {
    name: "specific-parent-name",
    age: irrelevantAge,
    interests: [
      "irrelevant",
      "irrelevant",
    ],
  };
  const mockedChildren = [
    {
      name: "child-name-1",
      parentName: "specific-parent-name",
    },
    {
      name: "child-name-2",
      parentName: "specific-parent-name",
    },
  ];

  // run the code
  const actual = getChildrenForParent(mockedParent, mockedChildren);
  const expected = [
    {
      name: "child-name-1",
    },
    {
      name: "child-name-2",
    },
  ];

  // assert the results
  expect(actual).toBe(expected);
});


이 테스트를 읽으면 "specific-parent-name"가 부모와 자식 모두에서 발견되고 특정 접두어가 있음을 알 수 있습니다. 이 값은 테스트를 통과하는 데 중요하다는 것을 알려줍니다. 반면 관련 없는 값은 "irrelevant" 값을 가지며 이 테스트에서 이러한 값을 안전하게 무시할 수 있음을 알려줍니다.

숫자 및 부울의 경우 값을 상수로 추출하고 상수에 의미 있는 이름을 지정할 수 있습니다.

⚠️ 면책 조항 ️



문자열을 ID로 사용하는 것은 좋지 않습니다. 대신 정수를 사용하세요! 명확한 예를 들기 위해 문자열을 사용했습니다.

결론


  • "test" 및 기타 무의미한 값을 테스트에 사용하는 것은 의미를 전달하지 않기 때문에 좋지 않습니다. 이로 인해 테스트를 이해하는 데 시간이 더 오래 걸리고 개발 시간이 느려집니다. 코드를 리팩터링하거나 확장해야 하는 경우
  • 대신 의미 있는 값을 사용하십시오. 예를 들어 "specific-something""irrelevant"
  • 숫자 및 부울 값을 의미 있는 이름을 가진 상수로 추출합니다
  • .

    동의하십니까, 동의하지 않으십니까? 댓글로 토론해봐요 😊


    트위터에서 팔로우

    https://prplcode.dev에 원래 게시됨

    좋은 웹페이지 즐겨찾기