먼저 일부 정의는 다음과 같습니다.
단위 테스트는 단위를 다른 단위와 분리하여 테스트 하지만 그 의미가 신뢰할 수있는 소스에 의해 구체적으로 정의되어 있지 않으므로 조금 더 잘 정의 해 보겠습니다. 화면 또는 UI 입력)에 선을 그릴 수있는 객관적인 장소가 있습니다. 코드가 I / O에 의존하는 경우 코드가 단위 경계를 넘어서므로 해당 I / O를 담당하는 단위를 조롱해야합니다.
그 정의에 따르면 순수한 함수와 같은 것을 조롱해야 할 강력한 이유는 없습니다. 즉, 단위 테스트가 순수한 함수 또는 부작용이없는 함수에 적합하다는 것을 의미합니다.
효과가있는 단위를 테스트하려면 효과를 담당하는 단위를 조롱해야하지만 대신 통합 테스트를 고려해야합니다. 따라서 대답은 "모의해야 할 경우 실제로 필요한 것이 통합 테스트인지 스스로에게 물어보십시오"입니다. 그러나 여기에 더 좋고 더 긴 대답이 있으며 토끼 구멍이 훨씬 깊어집니다. Mocks는 배울 것이 너무 많기 때문에 내가 좋아하는 코드 냄새 일 수 있습니다.
코드 냄새
이를 위해 Wikipedia를 보겠습니다.
컴퓨터 프로그래밍에서 코드 냄새는 더 깊은 문제를 나타낼 수있는 프로그램 소스 코드의 특성입니다.
나중에 계속됩니다 ...
"냄새는 기본 설계 원칙을 위반하고 설계 품질에 부정적인 영향을 미치는 코드의 특정 구조입니다." Girish의 Suryanarayana (2014 년 11 월). 소프트웨어 설계 냄새에 대한 리팩토링. 모건 카우프만 피. 258.
코드 냄새는 일반적으로 버그가 아닙니다. 그것들은 기술적으로 부정확하지 않으며 프로그램의 기능을 방해하지 않습니다. 대신, 설계의 약점을 나타내어 개발 속도를 늦추거나 향후 버그 또는 장애의 위험을 증가시킬 수 있습니다.
다시 말해, 모든 코드 냄새가 나쁜 것은 아닙니다. 대신, 그것들은 무언가가 최적의 형태로 표현되지 않을 수 있다는 일반적인 표시이며, 냄새 는 문제의 코드를 개선 할 기회를 나타낼 수 있습니다 .
조롱의 경우, 냄새는 조롱을 요구하는 것으로 보이는 유닛이 조롱 할 유닛에 의존 한다는 것을 나타냅니다 . 그것은 우리가 원자 - 풀 수 조각으로 문제를 분해하지 않은 표시를 할 수 있으며, 그 소프트웨어의 설계 결함을 나타낼 수 있습니다.
모든 소프트웨어 개발의 본질은 큰 문제를 더 작고 독립적 인 조각으로 분해하고 (분해) 솔루션을 함께 구성하여 큰 문제 (조성)를 해결하는 응용 프로그램을 형성하는 프로세스입니다.
큰 문제를 작은 부분으로 나누는 데 사용되는 장치가 서로 의존 할 때 조롱이 필요합니다. 달리 말하면, 우리의 구성 원자 단위가 실제로 원자 적이 지 않을 때 조롱이 필요하며, 우리의 분해 전략은 더 큰 문제를 더 작고 독립적 인 문제로 분해하지 못했습니다 .
코드 조롱을 조롱하는 것은 조롱에 본질적으로 문제가 있다는 것이 아닙니다. 때로는 매우 유용합니다. 코드 냄새가 나는 것은 응용 프로그램에서 문제가있는 커플 링 소스를 나타낼 수 있다는 것입니다. 때로는 해당 소스를 제거하는 것이 모형을 쓰는 것보다 훨씬 생산적입니다.
많은 종류의 커플 링이 있으며 일부는 다른 것보다 낫습니다. 모의가 코드 냄새라는 것을 이해 하면 냄새가 더 심해 지기 전에 응용 프로그램 설계 수명주기 초기 에 최악의 종류를 식별하고 피하도록 지시 할 수 있습니다 .