무의미한 테스트 값 사용 중지!
"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에 원래 게시됨
Reference
이 문제에 관하여(무의미한 테스트 값 사용 중지!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/simeg/stop-using-meaningless-test-values-2gg4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)